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 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 if (render->hasOverflowClip()) | 221 if (render->hasOverflowClip()) |
222 return adjustForAbsoluteZoom(render->scrollLeft(), render); | 222 return adjustForAbsoluteZoom(render->scrollLeft(), render); |
223 if (!document.inQuirksMode()) | 223 if (!document.inQuirksMode()) |
224 return 0; | 224 return 0; |
225 } | 225 } |
226 | 226 |
227 FrameView* view = document.view(); | 227 FrameView* view = document.view(); |
228 return view ? adjustForZoom(view->scrollX(), &document) : 0; | 228 return view ? adjustForZoom(view->scrollX(), &document) : 0; |
229 } | 229 } |
230 | 230 |
231 void HTMLBodyElement::setScrollLeft(int scrollLeft) | 231 void HTMLBodyElement::setScrollLeftInternal(int scrollLeft, ScrollBehavior scrol
lBehavior) |
232 { | 232 { |
233 Document& document = this->document(); | 233 Document& document = this->document(); |
234 document.updateLayoutIgnorePendingStylesheets(); | 234 document.updateLayoutIgnorePendingStylesheets(); |
235 | 235 |
236 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 236 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { |
237 RenderBox* render = renderBox(); | 237 RenderBox* render = renderBox(); |
238 if (!render) | 238 if (!render) |
239 return; | 239 return; |
240 if (render->hasOverflowClip()) { | 240 if (render->hasOverflowClip()) { |
241 // FIXME: Investigate how are other browsers casting to int (roundin
g, ceiling, ...). | 241 // FIXME: Investigate how are other browsers casting to int (roundin
g, ceiling, ...). |
242 render->setScrollLeft(static_cast<int>(scrollLeft * render->style()-
>effectiveZoom())); | 242 render->setScrollLeft(static_cast<int>(scrollLeft * render->style()-
>effectiveZoom()), scrollBehavior); |
243 return; | 243 return; |
244 } | 244 } |
245 if (!document.inQuirksMode()) | 245 if (!document.inQuirksMode()) |
246 return; | 246 return; |
247 } | 247 } |
248 | 248 |
249 Frame* frame = document.frame(); | 249 Frame* frame = document.frame(); |
250 if (!frame) | 250 if (!frame) |
251 return; | 251 return; |
252 FrameView* view = frame->view(); | 252 FrameView* view = frame->view(); |
253 if (!view) | 253 if (!view) |
254 return; | 254 return; |
255 view->setScrollPosition(IntPoint(static_cast<int>(scrollLeft * frame->pageZo
omFactor()), view->scrollY())); | 255 view->setScrollPosition(IntPoint(static_cast<int>(scrollLeft * frame->pageZo
omFactor()), view->scrollY()), scrollBehavior); |
256 } | 256 } |
257 | 257 |
258 int HTMLBodyElement::scrollTop() | 258 int HTMLBodyElement::scrollTop() |
259 { | 259 { |
260 Document& document = this->document(); | 260 Document& document = this->document(); |
261 document.updateLayoutIgnorePendingStylesheets(); | 261 document.updateLayoutIgnorePendingStylesheets(); |
262 | 262 |
263 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 263 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { |
264 RenderBox* render = renderBox(); | 264 RenderBox* render = renderBox(); |
265 if (!render) | 265 if (!render) |
266 return 0; | 266 return 0; |
267 if (render->hasOverflowClip()) | 267 if (render->hasOverflowClip()) |
268 return adjustForAbsoluteZoom(render->scrollTop(), render); | 268 return adjustForAbsoluteZoom(render->scrollTop(), render); |
269 if (!document.inQuirksMode()) | 269 if (!document.inQuirksMode()) |
270 return 0; | 270 return 0; |
271 } | 271 } |
272 | 272 |
273 FrameView* view = document.view(); | 273 FrameView* view = document.view(); |
274 return view ? adjustForZoom(view->scrollY(), &document) : 0; | 274 return view ? adjustForZoom(view->scrollY(), &document) : 0; |
275 } | 275 } |
276 | 276 |
277 void HTMLBodyElement::setScrollTop(int scrollTop) | 277 void HTMLBodyElement::setScrollTopInternal(int scrollTop, ScrollBehavior scrollB
ehavior) |
278 { | 278 { |
279 Document& document = this->document(); | 279 Document& document = this->document(); |
280 document.updateLayoutIgnorePendingStylesheets(); | 280 document.updateLayoutIgnorePendingStylesheets(); |
281 | 281 |
282 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 282 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { |
283 RenderBox* render = renderBox(); | 283 RenderBox* render = renderBox(); |
284 if (!render) | 284 if (!render) |
285 return; | 285 return; |
286 if (render->hasOverflowClip()) { | 286 if (render->hasOverflowClip()) { |
287 // FIXME: Investigate how are other browsers casting to int (roundin
g, ceiling, ...). | 287 // FIXME: Investigate how are other browsers casting to int (roundin
g, ceiling, ...). |
288 render->setScrollTop(static_cast<int>(scrollTop * render->style()->e
ffectiveZoom())); | 288 render->setScrollTop(static_cast<int>(scrollTop * render->style()->e
ffectiveZoom()), scrollBehavior); |
289 return; | 289 return; |
290 } | 290 } |
291 if (!document.inQuirksMode()) | 291 if (!document.inQuirksMode()) |
292 return; | 292 return; |
293 } | 293 } |
294 | 294 |
295 Frame* frame = document.frame(); | 295 Frame* frame = document.frame(); |
296 if (!frame) | 296 if (!frame) |
297 return; | 297 return; |
298 FrameView* view = frame->view(); | 298 FrameView* view = frame->view(); |
299 if (!view) | 299 if (!view) |
300 return; | 300 return; |
301 view->setScrollPosition(IntPoint(view->scrollX(), static_cast<int>(scrollTop
* frame->pageZoomFactor()))); | 301 view->setScrollPosition(IntPoint(view->scrollX(), static_cast<int>(scrollTop
* frame->pageZoomFactor())), scrollBehavior); |
302 } | 302 } |
303 | 303 |
304 int HTMLBodyElement::scrollHeight() | 304 int HTMLBodyElement::scrollHeight() |
305 { | 305 { |
306 // Update the document's layout. | 306 // Update the document's layout. |
307 Document& document = this->document(); | 307 Document& document = this->document(); |
308 document.updateLayoutIgnorePendingStylesheets(); | 308 document.updateLayoutIgnorePendingStylesheets(); |
309 FrameView* view = document.view(); | 309 FrameView* view = document.view(); |
310 return view ? adjustForZoom(view->contentsHeight(), &document) : 0; | 310 return view ? adjustForZoom(view->contentsHeight(), &document) : 0; |
311 } | 311 } |
312 | 312 |
313 int HTMLBodyElement::scrollWidth() | 313 int HTMLBodyElement::scrollWidth() |
314 { | 314 { |
315 // Update the document's layout. | 315 // Update the document's layout. |
316 Document& document = this->document(); | 316 Document& document = this->document(); |
317 document.updateLayoutIgnorePendingStylesheets(); | 317 document.updateLayoutIgnorePendingStylesheets(); |
318 FrameView* view = document.view(); | 318 FrameView* view = document.view(); |
319 return view ? adjustForZoom(view->contentsWidth(), &document) : 0; | 319 return view ? adjustForZoom(view->contentsWidth(), &document) : 0; |
320 } | 320 } |
321 | 321 |
322 } // namespace WebCore | 322 } // namespace WebCore |
OLD | NEW |