OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2000 Simon Hausmann (hausmann@kde.org) | 4 * (C) 2000 Simon Hausmann (hausmann@kde.org) |
5 * (C) 2001 Dirk Mueller (mueller@kde.org) | 5 * (C) 2001 Dirk Mueller (mueller@kde.org) |
6 * Copyright (C) 2004, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. | 6 * Copyright (C) 2004, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 if (render->hasOverflowClip()) | 232 if (render->hasOverflowClip()) |
233 return adjustForAbsoluteZoom(render->scrollLeft(), render); | 233 return adjustForAbsoluteZoom(render->scrollLeft(), render); |
234 if (!document.inQuirksMode()) | 234 if (!document.inQuirksMode()) |
235 return 0; | 235 return 0; |
236 } | 236 } |
237 | 237 |
238 FrameView* view = document.view(); | 238 FrameView* view = document.view(); |
239 return view ? adjustForZoom(view->scrollX(), &document) : 0; | 239 return view ? adjustForZoom(view->scrollX(), &document) : 0; |
240 } | 240 } |
241 | 241 |
242 void HTMLBodyElement::setScrollLeft(int scrollLeft) | 242 void HTMLBodyElement::setScrollLeftInternal(int scrollLeft, ScrollBehavior scrol
lBehavior) |
243 { | 243 { |
244 Document& document = this->document(); | 244 Document& document = this->document(); |
245 document.updateLayoutIgnorePendingStylesheets(); | 245 document.updateLayoutIgnorePendingStylesheets(); |
246 | 246 |
247 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 247 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { |
248 RenderBox* render = renderBox(); | 248 RenderBox* render = renderBox(); |
249 if (!render) | 249 if (!render) |
250 return; | 250 return; |
251 if (render->hasOverflowClip()) { | 251 if (render->hasOverflowClip()) { |
252 // FIXME: Investigate how are other browsers casting to int (roundin
g, ceiling, ...). | 252 // FIXME: Investigate how are other browsers casting to int (roundin
g, ceiling, ...). |
253 render->setScrollLeft(static_cast<int>(scrollLeft * render->style()-
>effectiveZoom())); | 253 render->setScrollLeft(static_cast<int>(scrollLeft * render->style()-
>effectiveZoom()), scrollBehavior); |
254 return; | 254 return; |
255 } | 255 } |
256 if (!document.inQuirksMode()) | 256 if (!document.inQuirksMode()) |
257 return; | 257 return; |
258 } | 258 } |
259 | 259 |
260 LocalFrame* frame = document.frame(); | 260 LocalFrame* frame = document.frame(); |
261 if (!frame) | 261 if (!frame) |
262 return; | 262 return; |
263 FrameView* view = frame->view(); | 263 FrameView* view = frame->view(); |
264 if (!view) | 264 if (!view) |
265 return; | 265 return; |
266 view->setScrollPosition(IntPoint(static_cast<int>(scrollLeft * frame->pageZo
omFactor()), view->scrollY())); | 266 view->setScrollPosition(IntPoint(static_cast<int>(scrollLeft * frame->pageZo
omFactor()), view->scrollY()), scrollBehavior); |
267 } | 267 } |
268 | 268 |
269 int HTMLBodyElement::scrollTop() | 269 int HTMLBodyElement::scrollTop() |
270 { | 270 { |
271 Document& document = this->document(); | 271 Document& document = this->document(); |
272 document.updateLayoutIgnorePendingStylesheets(); | 272 document.updateLayoutIgnorePendingStylesheets(); |
273 | 273 |
274 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 274 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { |
275 RenderBox* render = renderBox(); | 275 RenderBox* render = renderBox(); |
276 if (!render) | 276 if (!render) |
277 return 0; | 277 return 0; |
278 if (render->hasOverflowClip()) | 278 if (render->hasOverflowClip()) |
279 return adjustForAbsoluteZoom(render->scrollTop(), render); | 279 return adjustForAbsoluteZoom(render->scrollTop(), render); |
280 if (!document.inQuirksMode()) | 280 if (!document.inQuirksMode()) |
281 return 0; | 281 return 0; |
282 } | 282 } |
283 | 283 |
284 FrameView* view = document.view(); | 284 FrameView* view = document.view(); |
285 return view ? adjustForZoom(view->scrollY(), &document) : 0; | 285 return view ? adjustForZoom(view->scrollY(), &document) : 0; |
286 } | 286 } |
287 | 287 |
288 void HTMLBodyElement::setScrollTop(int scrollTop) | 288 void HTMLBodyElement::setScrollTopInternal(int scrollTop, ScrollBehavior scrollB
ehavior) |
289 { | 289 { |
290 Document& document = this->document(); | 290 Document& document = this->document(); |
291 document.updateLayoutIgnorePendingStylesheets(); | 291 document.updateLayoutIgnorePendingStylesheets(); |
292 | 292 |
293 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 293 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { |
294 RenderBox* render = renderBox(); | 294 RenderBox* render = renderBox(); |
295 if (!render) | 295 if (!render) |
296 return; | 296 return; |
297 if (render->hasOverflowClip()) { | 297 if (render->hasOverflowClip()) { |
298 // FIXME: Investigate how are other browsers casting to int (roundin
g, ceiling, ...). | 298 // FIXME: Investigate how are other browsers casting to int (roundin
g, ceiling, ...). |
299 render->setScrollTop(static_cast<int>(scrollTop * render->style()->e
ffectiveZoom())); | 299 render->setScrollTop(static_cast<int>(scrollTop * render->style()->e
ffectiveZoom()), scrollBehavior); |
300 return; | 300 return; |
301 } | 301 } |
302 if (!document.inQuirksMode()) | 302 if (!document.inQuirksMode()) |
303 return; | 303 return; |
304 } | 304 } |
305 | 305 |
306 LocalFrame* frame = document.frame(); | 306 LocalFrame* frame = document.frame(); |
307 if (!frame) | 307 if (!frame) |
308 return; | 308 return; |
309 FrameView* view = frame->view(); | 309 FrameView* view = frame->view(); |
310 if (!view) | 310 if (!view) |
311 return; | 311 return; |
312 view->setScrollPosition(IntPoint(view->scrollX(), static_cast<int>(scrollTop
* frame->pageZoomFactor()))); | 312 view->setScrollPosition(IntPoint(view->scrollX(), static_cast<int>(scrollTop
* frame->pageZoomFactor())), scrollBehavior); |
313 } | 313 } |
314 | 314 |
315 int HTMLBodyElement::scrollHeight() | 315 int HTMLBodyElement::scrollHeight() |
316 { | 316 { |
317 // Update the document's layout. | 317 // Update the document's layout. |
318 Document& document = this->document(); | 318 Document& document = this->document(); |
319 document.updateLayoutIgnorePendingStylesheets(); | 319 document.updateLayoutIgnorePendingStylesheets(); |
320 FrameView* view = document.view(); | 320 FrameView* view = document.view(); |
321 return view ? adjustForZoom(view->contentsHeight(), &document) : 0; | 321 return view ? adjustForZoom(view->contentsHeight(), &document) : 0; |
322 } | 322 } |
323 | 323 |
324 int HTMLBodyElement::scrollWidth() | 324 int HTMLBodyElement::scrollWidth() |
325 { | 325 { |
326 // Update the document's layout. | 326 // Update the document's layout. |
327 Document& document = this->document(); | 327 Document& document = this->document(); |
328 document.updateLayoutIgnorePendingStylesheets(); | 328 document.updateLayoutIgnorePendingStylesheets(); |
329 FrameView* view = document.view(); | 329 FrameView* view = document.view(); |
330 return view ? adjustForZoom(view->contentsWidth(), &document) : 0; | 330 return view ? adjustForZoom(view->contentsWidth(), &document) : 0; |
331 } | 331 } |
332 | 332 |
333 } // namespace WebCore | 333 } // namespace WebCore |
OLD | NEW |