Chromium Code Reviews| 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(); |
|
dshwang
2013/05/13 12:38:01
It is so confusing.
How about extracting scroll so
aelias_OOO_until_Jul13
2013/05/13 18:13:06
The reason is that changing page scale may have th
|
| + 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) |