Index: Source/core/page/Page.cpp |
diff --git a/Source/core/page/Page.cpp b/Source/core/page/Page.cpp |
index 6df30ea7bfeeaf6d1265d91544838e4505ef8bd3..5c53b24c7180ae50e7be6ab0525c1b536d513a90 100644 |
--- a/Source/core/page/Page.cpp |
+++ b/Source/core/page/Page.cpp |
@@ -431,24 +431,25 @@ void Page::setPageScaleFactor(float scale, const IntPoint& origin) |
{ |
FrameView* view = mainFrame()->view(); |
- if (scale == m_pageScaleFactor) { |
- if (view && view->scrollPosition() != origin) |
- view->setScrollPosition(origin); |
- return; |
- } |
+ bool oldProgrammaticScroll = view->inProgrammaticScroll(); |
+ view->setInProgrammaticScroll(false); |
- m_pageScaleFactor = scale; |
+ if (scale != m_pageScaleFactor) { |
+ m_pageScaleFactor = scale; |
- if (view) |
- view->setVisibleContentScaleFactor(scale); |
+ if (view) |
+ view->setVisibleContentScaleFactor(scale); |
- mainFrame()->deviceOrPageScaleFactorChanged(); |
+ mainFrame()->deviceOrPageScaleFactorChanged(); |
- if (view) |
- view->setViewportConstrainedObjectsNeedLayout(); |
+ if (view) |
+ view->setViewportConstrainedObjectsNeedLayout(); |
+ } |
if (view && view->scrollPosition() != origin) |
- view->setScrollPosition(origin); |
+ view->notifyScrollPositionChanged(origin); |
+ |
+ view->setInProgrammaticScroll(oldProgrammaticScroll); |
} |
void Page::setDeviceScaleFactor(float scaleFactor) |