| Index: Source/core/html/HTMLBodyElement.cpp
|
| diff --git a/Source/core/html/HTMLBodyElement.cpp b/Source/core/html/HTMLBodyElement.cpp
|
| index 887957a828b6adc6b7d951207f952470f6639383..624dec6126e55b7272c8d52e7c6fb26425e2e489 100644
|
| --- a/Source/core/html/HTMLBodyElement.cpp
|
| +++ b/Source/core/html/HTMLBodyElement.cpp
|
| @@ -197,13 +197,16 @@ bool HTMLBodyElement::supportsFocus() const
|
| return rendererIsEditable() || HTMLElement::supportsFocus();
|
| }
|
|
|
| -static double adjustForZoom(int value, Document* document)
|
| +static int adjustForZoom(int value, Document* document)
|
| {
|
| LocalFrame* frame = document->frame();
|
| float zoomFactor = frame->pageZoomFactor();
|
| if (zoomFactor == 1)
|
| - return static_cast<double>(value);
|
| - return static_cast<double>(value) / zoomFactor;
|
| + return value;
|
| + // Needed because of truncation (rather than rounding) when scaling up.
|
| + if (zoomFactor > 1)
|
| + value++;
|
| + return static_cast<int>(value / zoomFactor);
|
| }
|
|
|
| // Blink, Gecko and Presto's quirks mode implementations of overflow set to the
|
| @@ -217,7 +220,7 @@ static double adjustForZoom(int value, Document* document)
|
| // That said, Blink's {set}scroll{Top,Left} behaviors match Gecko's: even if there is a non-overflown
|
| // scrollable area, scrolling should not get propagated to the viewport in neither strict
|
| // or quirks modes.
|
| -double HTMLBodyElement::scrollLeft()
|
| +int HTMLBodyElement::scrollLeft()
|
| {
|
| Document& document = this->document();
|
| document.updateLayoutIgnorePendingStylesheets();
|
| @@ -236,7 +239,7 @@ double HTMLBodyElement::scrollLeft()
|
| return view ? adjustForZoom(view->scrollX(), &document) : 0;
|
| }
|
|
|
| -void HTMLBodyElement::setScrollLeft(double scrollLeft)
|
| +void HTMLBodyElement::setScrollLeft(int scrollLeft)
|
| {
|
| Document& document = this->document();
|
| document.updateLayoutIgnorePendingStylesheets();
|
| @@ -263,7 +266,7 @@ void HTMLBodyElement::setScrollLeft(double scrollLeft)
|
| view->setScrollPosition(IntPoint(static_cast<int>(scrollLeft * frame->pageZoomFactor()), view->scrollY()));
|
| }
|
|
|
| -double HTMLBodyElement::scrollTop()
|
| +int HTMLBodyElement::scrollTop()
|
| {
|
| Document& document = this->document();
|
| document.updateLayoutIgnorePendingStylesheets();
|
| @@ -282,7 +285,7 @@ double HTMLBodyElement::scrollTop()
|
| return view ? adjustForZoom(view->scrollY(), &document) : 0;
|
| }
|
|
|
| -void HTMLBodyElement::setScrollTop(double scrollTop)
|
| +void HTMLBodyElement::setScrollTop(int scrollTop)
|
| {
|
| Document& document = this->document();
|
| document.updateLayoutIgnorePendingStylesheets();
|
| @@ -309,7 +312,7 @@ void HTMLBodyElement::setScrollTop(double scrollTop)
|
| view->setScrollPosition(IntPoint(view->scrollX(), static_cast<int>(scrollTop * frame->pageZoomFactor())));
|
| }
|
|
|
| -double HTMLBodyElement::scrollHeight()
|
| +int HTMLBodyElement::scrollHeight()
|
| {
|
| // Update the document's layout.
|
| Document& document = this->document();
|
| @@ -318,7 +321,7 @@ double HTMLBodyElement::scrollHeight()
|
| return view ? adjustForZoom(view->contentsHeight(), &document) : 0;
|
| }
|
|
|
| -double HTMLBodyElement::scrollWidth()
|
| +int HTMLBodyElement::scrollWidth()
|
| {
|
| // Update the document's layout.
|
| Document& document = this->document();
|
|
|