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