| 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)
|
|
|