| Index: Source/core/page/Page.cpp
|
| diff --git a/Source/core/page/Page.cpp b/Source/core/page/Page.cpp
|
| index 6c7942b237f980b442317913cffe51b832aaa08b..dcbef4dd45ba52b2d87d520bd3ee48622a253560 100644
|
| --- a/Source/core/page/Page.cpp
|
| +++ b/Source/core/page/Page.cpp
|
| @@ -447,24 +447,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)
|
|
|