Changeset 67762 in webkit
- Timestamp:
- Sep 17, 2010 5:32:24 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 34 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r67759 r67762 1 2010-09-17 Daniel Bates <dbates@rim.com> 2 3 Reviewed by Darin Adler. 4 5 REGRESSION (r60104): Zoom level is unexpectedly reset on page reload 6 https://bugs.webkit.org/show_bug.cgi?id=42863 7 8 * fast/css/preserve-user-specified-zoom-level-on-reload.html: Added. 9 * platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.checksum: Added. 10 * platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.png: Added. 11 * platform/mac/fast/css/preserve-user-specified-zoom-level-on-reload-expected.txt: Added. 12 1 13 2010-09-17 Tony Chang <tony@chromium.org> 2 14 -
trunk/WebCore/ChangeLog
r67758 r67762 1 2010-09-17 Darin Adler <darin@apple.com> 2 3 Reviewed by Sam Weinig. 4 5 REGRESSION (r60104): Zoom level is unexpectedly reset on page reload 6 https://bugs.webkit.org/show_bug.cgi?id=42863 7 8 Moved zoom level back from FrameView to Frame. 9 I had forgotten that FrameView's lifetime is much shorter than 10 Frame's, and until that is fixed it's best to leave this on Frame. 11 12 * WebCore.exp.in: Updated. 13 14 * css/CSSStyleSelector.cpp: 15 (WebCore::CSSStyleSelector::styleForDocument): 16 (WebCore::CSSStyleSelector::applyProperty): 17 (WebCore::CSSStyleSelector::getComputedSizeFromSpecifiedSize): 18 * dom/Document.cpp: 19 (WebCore::Document::nodesFromRect): 20 (WebCore::Document::elementFromPoint): 21 (WebCore::Document::caretRangeFromPoint): 22 * dom/MouseRelatedEvent.cpp: 23 (WebCore::contentsX): 24 (WebCore::contentsY): 25 (WebCore::pageZoomFactor): 26 * dom/Node.cpp: 27 (WebCore::Node::dispatchMouseEvent): 28 (WebCore::Node::dispatchWheelEvent): 29 * html/HTMLBodyElement.cpp: 30 (WebCore::adjustForZoom): 31 (WebCore::HTMLBodyElement::scrollLeft): 32 (WebCore::HTMLBodyElement::setScrollLeft): 33 (WebCore::HTMLBodyElement::scrollTop): 34 (WebCore::HTMLBodyElement::setScrollTop): 35 (WebCore::HTMLBodyElement::scrollHeight): 36 (WebCore::HTMLBodyElement::scrollWidth): 37 * html/ImageDocument.cpp: 38 (WebCore::pageZoomFactor): 39 (WebCore::ImageDocument::scale): 40 (WebCore::ImageDocument::imageFitsInWindow): 41 * page/DOMWindow.cpp: 42 (WebCore::DOMWindow::innerHeight): 43 (WebCore::DOMWindow::innerWidth): 44 (WebCore::DOMWindow::scrollX): 45 (WebCore::DOMWindow::scrollY): 46 (WebCore::DOMWindow::scrollTo): 47 * page/DragController.cpp: 48 (WebCore::elementUnderMouse): 49 * rendering/RenderView.cpp: 50 (WebCore::RenderView::zoomFactor): 51 * svg/SVGSVGElement.cpp: 52 (WebCore::SVGSVGElement::currentScale): 53 (WebCore::SVGSVGElement::setCurrentScale): 54 Get zoom factor from Frame rather than FrameView. 55 56 * page/Frame.cpp: 57 (WebCore::parentPageZoomFactor): Moved back here from FrameView. 58 (WebCore::parentTextZoomFactor): Ditto. 59 (WebCore::Frame::Frame): Ditto. 60 (WebCore::Frame::setPageZoomFactor): Ditto. 61 (WebCore::Frame::setTextZoomFactor): Ditto. 62 (WebCore::Frame::setPageAndTextZoomFactors): Ditto. 63 64 * page/Frame.h: Moved functions and data for zooming back here 65 from FrameView. 66 67 * page/FrameView.cpp: 68 (WebCore::FrameView::FrameView): 69 * page/FrameView.h: 70 Removed code from here. 71 1 72 2010-09-17 Matthew Delaney <mdelaney@apple.com> 2 73 -
trunk/WebCore/WebCore.exp.in
r67758 r67762 581 581 __ZN7WebCore5Frame10createViewERKNS_7IntSizeERKNS_5ColorEbS3_bNS_13ScrollbarModeEbS7_b 582 582 __ZN7WebCore5Frame14frameForWidgetEPKNS_6WidgetE 583 __ZN7WebCore5Frame17setPageZoomFactorEf 584 __ZN7WebCore5Frame17setTextZoomFactorEf 583 585 __ZN7WebCore5Frame23visiblePositionForPointERKNS_8IntPointE 584 586 __ZN7WebCore5Frame25matchLabelsAgainstElementEP7NSArrayPNS_7ElementE 587 __ZN7WebCore5Frame25setPageAndTextZoomFactorsEff 585 588 __ZN7WebCore5Frame28searchForLabelsBeforeElementEP7NSArrayPNS_7ElementEPmPb 586 589 __ZN7WebCore5Frame6createEPNS_4PageEPNS_21HTMLFrameOwnerElementEPNS_17FrameLoaderClientE … … 768 771 __ZN7WebCore9FrameView16adjustPageHeightEPffff 769 772 __ZN7WebCore9FrameView16setPaintBehaviorEj 770 __ZN7WebCore9FrameView17setPageZoomFactorEf771 __ZN7WebCore9FrameView17setTextZoomFactorEf772 773 __ZN7WebCore9FrameView18updateControlTintsEv 773 774 __ZN7WebCore9FrameView20enterCompositingModeEv … … 776 777 __ZN7WebCore9FrameView23updateCanHaveScrollbarsEv 777 778 __ZN7WebCore9FrameView24forceLayoutForPaginationERKNS_9FloatSizeEfNS_5Frame19AdjustViewSizeOrNotE 778 __ZN7WebCore9FrameView25setPageAndTextZoomFactorsEff779 779 __ZN7WebCore9FrameView29setShouldUpdateWhileOffscreenEb 780 780 __ZN7WebCore9FrameView29syncCompositingStateRecursiveEv … … 847 847 __ZNK3JSC8Bindings10RootObject12globalObjectEv 848 848 __ZNK3WTF6String14createCFStringEv 849 __ZNK7WebCore6Editor34selectionStartHasSpellingMarkerForEii850 849 __ZNK7WebCore10FloatPointcv8_NSPointEv 851 850 __ZNK7WebCore10PluginData16supportsMimeTypeERKN3WTF6StringE … … 1023 1022 __ZNK7WebCore6Editor30applyEditingStyleToBodyElementEv 1024 1023 __ZNK7WebCore6Editor31fontAttributesForSelectionStartEv 1024 __ZNK7WebCore6Editor34selectionStartHasSpellingMarkerForEii 1025 1025 __ZNK7WebCore6Editor37baseWritingDirectionForSelectionStartEv 1026 1026 __ZNK7WebCore6Editor6canCutEv -
trunk/WebCore/css/CSSStyleSelector.cpp
r67667 r67762 1100 1100 PassRefPtr<RenderStyle> CSSStyleSelector::styleForDocument(Document* document) 1101 1101 { 1102 Frame View* view = document->view();1102 Frame* frame = document->frame(); 1103 1103 1104 1104 RefPtr<RenderStyle> documentStyle = RenderStyle::create(); 1105 1105 documentStyle->setDisplay(BLOCK); 1106 1106 documentStyle->setVisuallyOrdered(document->visuallyOrdered()); 1107 documentStyle->setZoom( view ? view->pageZoomFactor() : 1);1107 documentStyle->setZoom(frame ? frame->pageZoomFactor() : 1); 1108 1108 1109 1109 FontDescription fontDescription; … … 4150 4150 double multiplier = zoomFactor; 4151 4151 if (m_style->textSizeAdjust()) { 4152 if (Frame View* view = m_checker.m_document->view())4153 multiplier *= view->textZoomFactor();4152 if (Frame* frame = m_checker.m_document->frame()) 4153 multiplier *= frame->textZoomFactor(); 4154 4154 } 4155 4155 lineHeight = Length(primitiveValue->computeLengthIntForLength(style(), m_rootElementStyle, multiplier), Fixed); … … 6275 6275 if (!useSVGZoomRules) { 6276 6276 zoomFactor = style->effectiveZoom(); 6277 if ( document->view())6278 zoomFactor *= document->view()->textZoomFactor();6277 if (Frame* frame = document->frame()) 6278 zoomFactor *= frame->textZoomFactor(); 6279 6279 } 6280 6280 -
trunk/WebCore/dom/Document.cpp
r67627 r67762 1061 1061 return 0; 1062 1062 1063 float zoomFactor = frame View->pageZoomFactor();1063 float zoomFactor = frame->pageZoomFactor(); 1064 1064 IntPoint point = roundedIntPoint(FloatPoint(centerX * zoomFactor + view()->scrollX(), centerY * zoomFactor + view()->scrollY())); 1065 1065 IntSize padding(hPadding, vPadding); … … 1114 1114 return 0; 1115 1115 1116 float zoomFactor = frame View->pageZoomFactor();1116 float zoomFactor = frame->pageZoomFactor(); 1117 1117 IntPoint point = roundedIntPoint(FloatPoint(x * zoomFactor + view()->scrollX(), y * zoomFactor + view()->scrollY())); 1118 1118 … … 1144 1144 return 0; 1145 1145 1146 float zoomFactor = frame View->pageZoomFactor();1146 float zoomFactor = frame->pageZoomFactor(); 1147 1147 IntPoint point = roundedIntPoint(FloatPoint(x * zoomFactor + view()->scrollX(), y * zoomFactor + view()->scrollY())); 1148 1148 -
trunk/WebCore/dom/MouseRelatedEvent.cpp
r60104 r67762 58 58 if (!frameView) 59 59 return 0; 60 return frameView->scrollX() / frame View->pageZoomFactor();60 return frameView->scrollX() / frame->pageZoomFactor(); 61 61 } 62 62 … … 71 71 if (!frameView) 72 72 return 0; 73 return frameView->scrollY() / frame View->pageZoomFactor();73 return frameView->scrollY() / frame->pageZoomFactor(); 74 74 } 75 75 … … 127 127 if (!frame) 128 128 return 1; 129 FrameView* view = frame->view(); 130 if (!view) 131 return 1; 132 return view->pageZoomFactor(); 129 return frame->pageZoomFactor(); 133 130 } 134 131 -
trunk/WebCore/dom/Node.cpp
r67182 r67762 2846 2846 int adjustedPageX = pageX; 2847 2847 int adjustedPageY = pageY; 2848 if (Frame View* view = document()->view()) {2849 float pageZoom = view->pageZoomFactor();2848 if (Frame* frame = document()->frame()) { 2849 float pageZoom = frame->pageZoomFactor(); 2850 2850 if (pageZoom != 1.0f) { 2851 2851 // Adjust our pageX and pageY to account for the page zoom. … … 2903 2903 int adjustedPageX = pos.x(); 2904 2904 int adjustedPageY = pos.y(); 2905 if (Frame View* view = document()->view()) {2906 float pageZoom = view->pageZoomFactor();2905 if (Frame* frame = document()->frame()) { 2906 float pageZoom = frame->pageZoomFactor(); 2907 2907 if (pageZoom != 1.0f) { 2908 2908 // Adjust our pageX and pageY to account for the page zoom. -
trunk/WebCore/html/HTMLBodyElement.cpp
r67274 r67762 253 253 } 254 254 255 static int adjustForZoom(int value, FrameView* frameView)256 { 257 float zoomFactor = frameView->pageZoomFactor();255 static int adjustForZoom(int value, Document* document) 256 { 257 float zoomFactor = document->frame()->pageZoomFactor(); 258 258 if (zoomFactor == 1) 259 259 return value; … … 267 267 { 268 268 // Update the document's layout. 269 Document* doc =document();270 doc ->updateLayoutIgnorePendingStylesheets();271 FrameView* view = doc ->view();272 return view ? adjustForZoom(view->scrollX(), view) : 0;269 Document* document = this->document(); 270 document->updateLayoutIgnorePendingStylesheets(); 271 FrameView* view = document->view(); 272 return view ? adjustForZoom(view->scrollX(), document) : 0; 273 273 } 274 274 … … 277 277 Document* document = this->document(); 278 278 document->updateLayoutIgnorePendingStylesheets(); 279 FrameView* view = document->view(); 279 Frame* frame = document->frame(); 280 if (!frame) 281 return; 282 FrameView* view = frame->view(); 280 283 if (!view) 281 284 return; 282 view->setScrollPosition(IntPoint(static_cast<int>(scrollLeft * view->pageZoomFactor()), view->scrollY()));285 view->setScrollPosition(IntPoint(static_cast<int>(scrollLeft * frame->pageZoomFactor()), view->scrollY())); 283 286 } 284 287 … … 286 289 { 287 290 // Update the document's layout. 288 Document* doc =document();289 doc ->updateLayoutIgnorePendingStylesheets();290 FrameView* view = doc ->view();291 return view ? adjustForZoom(view->scrollY(), view) : 0;291 Document* document = this->document(); 292 document->updateLayoutIgnorePendingStylesheets(); 293 FrameView* view = document->view(); 294 return view ? adjustForZoom(view->scrollY(), document) : 0; 292 295 } 293 296 … … 296 299 Document* document = this->document(); 297 300 document->updateLayoutIgnorePendingStylesheets(); 298 FrameView* view = document->view(); 301 Frame* frame = document->frame(); 302 if (!frame) 303 return; 304 FrameView* view = frame->view(); 299 305 if (!view) 300 306 return; 301 view->setScrollPosition(IntPoint(view->scrollX(), static_cast<int>(scrollTop * view->pageZoomFactor())));307 view->setScrollPosition(IntPoint(view->scrollX(), static_cast<int>(scrollTop * frame->pageZoomFactor()))); 302 308 } 303 309 … … 305 311 { 306 312 // Update the document's layout. 307 Document* doc =document();308 doc ->updateLayoutIgnorePendingStylesheets();309 FrameView* view = doc ->view();310 return view ? adjustForZoom(view->contentsHeight(), view) : 0;313 Document* document = this->document(); 314 document->updateLayoutIgnorePendingStylesheets(); 315 FrameView* view = document->view(); 316 return view ? adjustForZoom(view->contentsHeight(), document) : 0; 311 317 } 312 318 … … 314 320 { 315 321 // Update the document's layout. 316 Document* doc =document();317 doc ->updateLayoutIgnorePendingStylesheets();318 FrameView* view = doc ->view();319 return view ? adjustForZoom(view->contentsWidth(), view) : 0;322 Document* document = this->document(); 323 document->updateLayoutIgnorePendingStylesheets(); 324 FrameView* view = document->view(); 325 return view ? adjustForZoom(view->contentsWidth(), document) : 0; 320 326 } 321 327 -
trunk/WebCore/html/ImageDocument.cpp
r67085 r67762 118 118 // -------- 119 119 120 static float pageZoomFactor( Document* document)121 { 122 Frame View* view = document->view();123 return view ? view->pageZoomFactor() : 1;120 static float pageZoomFactor(const Document* document) 121 { 122 Frame* frame = document->frame(); 123 return frame ? frame->pageZoomFactor() : 1; 124 124 } 125 125 … … 232 232 return 1; 233 233 234 IntSize imageSize = m_imageElement->cachedImage()->imageSize( view->pageZoomFactor());234 IntSize imageSize = m_imageElement->cachedImage()->imageSize(pageZoomFactor(this)); 235 235 IntSize windowSize = IntSize(view->width(), view->height()); 236 236 … … 320 320 321 321 FrameView* view = frame()->view(); 322 323 IntSize imageSize = m_imageElement->cachedImage()->imageSize(view->pageZoomFactor()); 322 if (!view) 323 return true; 324 325 IntSize imageSize = m_imageElement->cachedImage()->imageSize(pageZoomFactor(this)); 324 326 IntSize windowSize = IntSize(view->width(), view->height()); 325 327 -
trunk/WebCore/page/DOMWindow.cpp
r67122 r67762 1054 1054 return 0; 1055 1055 1056 return static_cast<int>(view->height() / view->pageZoomFactor());1056 return static_cast<int>(view->height() / m_frame->pageZoomFactor()); 1057 1057 } 1058 1058 … … 1066 1066 return 0; 1067 1067 1068 return static_cast<int>(view->width() / view->pageZoomFactor());1068 return static_cast<int>(view->width() / m_frame->pageZoomFactor()); 1069 1069 } 1070 1070 … … 1104 1104 m_frame->document()->updateLayoutIgnorePendingStylesheets(); 1105 1105 1106 return static_cast<int>(view->scrollX() / view->pageZoomFactor());1106 return static_cast<int>(view->scrollX() / m_frame->pageZoomFactor()); 1107 1107 } 1108 1108 … … 1118 1118 m_frame->document()->updateLayoutIgnorePendingStylesheets(); 1119 1119 1120 return static_cast<int>(view->scrollY() / view->pageZoomFactor());1120 return static_cast<int>(view->scrollY() / m_frame->pageZoomFactor()); 1121 1121 } 1122 1122 … … 1338 1338 return; 1339 1339 1340 int zoomedX = static_cast<int>(x * view->pageZoomFactor());1341 int zoomedY = static_cast<int>(y * view->pageZoomFactor());1340 int zoomedX = static_cast<int>(x * m_frame->pageZoomFactor()); 1341 int zoomedY = static_cast<int>(y * m_frame->pageZoomFactor()); 1342 1342 view->setScrollPosition(IntPoint(zoomedX, zoomedY)); 1343 1343 } -
trunk/WebCore/page/DragController.cpp
r67653 r67762 271 271 static Element* elementUnderMouse(Document* documentUnderMouse, const IntPoint& p) 272 272 { 273 Frame View* view = documentUnderMouse->view();274 float zoomFactor = view ? view->pageZoomFactor() : 1;273 Frame* frame = documentUnderMouse->frame(); 274 float zoomFactor = frame ? frame->pageZoomFactor() : 1; 275 275 IntPoint point = roundedIntPoint(FloatPoint(p.x() * zoomFactor, p.y() * zoomFactor)); 276 276 -
trunk/WebCore/page/Frame.cpp
r67735 r67762 130 130 } 131 131 132 static inline float parentPageZoomFactor(Frame* frame) 133 { 134 Frame* parent = frame->tree()->parent(); 135 if (!parent) 136 return 1; 137 return frame->pageZoomFactor(); 138 } 139 140 static inline float parentTextZoomFactor(Frame* frame) 141 { 142 Frame* parent = frame->tree()->parent(); 143 if (!parent) 144 return 1; 145 return frame->textZoomFactor(); 146 } 147 132 148 inline Frame::Frame(Page* page, HTMLFrameOwnerElement* ownerElement, FrameLoaderClient* frameLoaderClient) 133 149 : m_page(page) … … 142 158 , m_animationController(this) 143 159 , m_lifeSupportTimer(this, &Frame::lifeSupportTimerFired) 160 , m_pageZoomFactor(parentPageZoomFactor(this)) 161 , m_textZoomFactor(parentTextZoomFactor(this)) 144 162 #if ENABLE(ORIENTATION_EVENTS) 145 163 , m_orientation(0) … … 883 901 } 884 902 903 void Frame::setPageZoomFactor(float factor) 904 { 905 setPageAndTextZoomFactors(factor, m_textZoomFactor); 906 } 907 908 void Frame::setTextZoomFactor(float factor) 909 { 910 setPageAndTextZoomFactors(m_pageZoomFactor, factor); 911 } 912 913 void Frame::setPageAndTextZoomFactors(float pageZoomFactor, float textZoomFactor) 914 { 915 if (m_pageZoomFactor == pageZoomFactor && m_textZoomFactor == textZoomFactor) 916 return; 917 918 Page* page = this->page(); 919 if (!page) 920 return; 921 922 Document* document = this->document(); 923 if (!document) 924 return; 925 926 #if ENABLE(SVG) 927 // Respect SVGs zoomAndPan="disabled" property in standalone SVG documents. 928 // FIXME: How to handle compound documents + zoomAndPan="disabled"? Needs SVG WG clarification. 929 if (document->isSVGDocument()) { 930 if (!static_cast<SVGDocument*>(document)->zoomAndPanEnabled()) 931 return; 932 if (document->renderer()) 933 document->renderer()->setNeedsLayout(true); 934 } 935 #endif 936 937 if (m_pageZoomFactor != pageZoomFactor) { 938 if (FrameView* view = this->view()) { 939 // Update the scroll position when doing a full page zoom, so the content stays in relatively the same position. 940 IntPoint scrollPosition = view->scrollPosition(); 941 float percentDifference = (pageZoomFactor / m_pageZoomFactor); 942 view->setScrollPosition(IntPoint(scrollPosition.x() * percentDifference, scrollPosition.y() * percentDifference)); 943 } 944 } 945 946 m_pageZoomFactor = pageZoomFactor; 947 m_textZoomFactor = textZoomFactor; 948 949 document->recalcStyle(Node::Force); 950 951 for (Frame* child = tree()->firstChild(); child; child = child->tree()->nextSibling()) 952 child->setPageAndTextZoomFactors(m_pageZoomFactor, m_textZoomFactor); 953 954 if (FrameView* view = this->view()) { 955 if (document->renderer() && document->renderer()->needsLayout() && view->didFirstLayout()) 956 view->layout(); 957 } 958 } 959 885 960 } // namespace WebCore -
trunk/WebCore/page/Frame.h
r67274 r67762 139 139 void setDocument(PassRefPtr<Document>); 140 140 141 void setPageZoomFactor(float factor); 142 float pageZoomFactor() const { return m_pageZoomFactor; } 143 void setTextZoomFactor(float factor); 144 float textZoomFactor() const { return m_textZoomFactor; } 145 void setPageAndTextZoomFactors(float pageZoomFactor, float textZoomFactor); 146 141 147 #if ENABLE(ORIENTATION_EVENTS) 142 148 // Orientation is the interface orientation in degrees. Some examples are: … … 206 212 207 213 Timer<Frame> m_lifeSupportTimer; 214 215 float m_pageZoomFactor; 216 float m_textZoomFactor; 208 217 209 218 #if ENABLE(ORIENTATION_EVENTS) -
trunk/WebCore/page/FrameView.cpp
r67365 r67762 112 112 }; 113 113 114 static inline float parentPageZoomFactor(Frame* frame)115 {116 Frame* parent = frame->tree()->parent();117 if (!parent)118 return 1;119 FrameView* parentView = parent->view();120 if (!parentView)121 return 1;122 return parentView->pageZoomFactor();123 }124 125 static inline float parentTextZoomFactor(Frame* frame)126 {127 Frame* parent = frame->tree()->parent();128 if (!parent)129 return 1;130 FrameView* parentView = parent->view();131 if (!parentView)132 return 1;133 return parentView->textZoomFactor();134 }135 136 114 FrameView::FrameView(Frame* frame) 137 115 : m_frame(frame) … … 157 135 , m_setNeedsLayoutWasDeferred(false) 158 136 , m_scrollCorner(0) 159 , m_pageZoomFactor(parentPageZoomFactor(frame))160 , m_textZoomFactor(parentTextZoomFactor(frame))161 162 137 { 163 138 init(); … … 2296 2271 } 2297 2272 2298 void FrameView::setPageZoomFactor(float factor)2299 {2300 setPageAndTextZoomFactors(factor, m_textZoomFactor);2301 }2302 2303 void FrameView::setTextZoomFactor(float factor)2304 {2305 setPageAndTextZoomFactors(m_pageZoomFactor, factor);2306 }2307 2308 void FrameView::setPageAndTextZoomFactors(float pageZoomFactor, float textZoomFactor)2309 {2310 if (m_pageZoomFactor == pageZoomFactor && m_textZoomFactor == textZoomFactor)2311 return;2312 2313 if (!m_frame)2314 return;2315 2316 Page* page = m_frame->page();2317 if (!page)2318 return;2319 2320 Document* document = m_frame->document();2321 if (!document)2322 return;2323 2324 #if ENABLE(SVG)2325 // Respect SVGs zoomAndPan="disabled" property in standalone SVG documents.2326 // FIXME: How to handle compound documents + zoomAndPan="disabled"? Needs SVG WG clarification.2327 if (document->isSVGDocument()) {2328 if (!static_cast<SVGDocument*>(document)->zoomAndPanEnabled())2329 return;2330 if (document->renderer())2331 document->renderer()->setNeedsLayout(true);2332 }2333 #endif2334 2335 if (m_pageZoomFactor != pageZoomFactor) {2336 // Update the scroll position when doing a full page zoom, so the content stays in relatively the same position.2337 IntPoint scrollPosition = this->scrollPosition();2338 float percentDifference = (pageZoomFactor / m_pageZoomFactor);2339 setScrollPosition(IntPoint(scrollPosition.x() * percentDifference, scrollPosition.y() * percentDifference));2340 }2341 2342 m_pageZoomFactor = pageZoomFactor;2343 m_textZoomFactor = textZoomFactor;2344 2345 document->recalcStyle(Node::Force);2346 2347 for (Frame* child = m_frame->tree()->firstChild(); child; child = child->tree()->nextSibling()) {2348 if (FrameView* childView = child->view())2349 childView->setPageAndTextZoomFactors(m_pageZoomFactor, m_textZoomFactor);2350 }2351 2352 if (document->renderer() && document->renderer()->needsLayout() && didFirstLayout())2353 layout();2354 }2355 2356 2273 // Normal delay 2357 2274 void FrameView::setRepaintThrottlingDeferredRepaintDelay(double p) -
trunk/WebCore/page/FrameView.h
r67365 r67762 218 218 void invalidateScrollCorner(); 219 219 220 void setPageZoomFactor(float factor);221 float pageZoomFactor() const { return m_pageZoomFactor; }222 void setTextZoomFactor(float factor);223 float textZoomFactor() const { return m_textZoomFactor; }224 void setPageAndTextZoomFactors(float pageZoomFactor, float textZoomFactor);225 226 220 // Normal delay 227 221 static void setRepaintThrottlingDeferredRepaintDelay(double p); … … 374 368 RenderScrollbarPart* m_scrollCorner; 375 369 376 float m_pageZoomFactor;377 float m_textZoomFactor;378 379 370 static double s_deferredRepaintDelay; 380 371 static double s_initialDeferredRepaintDelayDuringLoading; -
trunk/WebCore/rendering/RenderView.cpp
r67660 r67762 665 665 float RenderView::zoomFactor() const 666 666 { 667 return m_frameView->pageZoomFactor(); 667 Frame* frame = m_frameView->frame(); 668 return frame ? frame->pageZoomFactor() : 1; 668 669 } 669 670 -
trunk/WebCore/svg/SVGSVGElement.cpp
r67274 r67762 194 194 { 195 195 // Only the page zoom factor is relevant for SVG 196 if (Frame View* view = document()->view())197 return view->pageZoomFactor();196 if (Frame* frame = document()->frame()) 197 return frame->pageZoomFactor(); 198 198 return m_scale; 199 199 } … … 201 201 void SVGSVGElement::setCurrentScale(float scale) 202 202 { 203 if (Frame View* view = document()->view()) {203 if (Frame* frame = document()->frame()) { 204 204 // Calling setCurrentScale() on the outermost <svg> element in a standalone SVG document 205 205 // is allowed to change the page zoom factor, influencing the document size, scrollbars etc. 206 206 if (parentNode() == document()) 207 view->setPageZoomFactor(scale);207 frame->setPageZoomFactor(scale); 208 208 return; 209 209 } -
trunk/WebKit/chromium/ChangeLog
r67757 r67762 1 2010-09-17 Darin Adler <darin@apple.com> 2 3 Reviewed by Sam Weinig. 4 5 REGRESSION (r60104): Zoom level is unexpectedly reset on page reload 6 https://bugs.webkit.org/show_bug.cgi?id=42863 7 8 * src/FrameLoaderClientImpl.cpp: 9 (WebKit::FrameLoaderClientImpl::createPlugin): 10 * src/WebViewImpl.cpp: 11 (WebKit::WebViewImpl::setZoomLevel): 12 Call functions on Frame instead of FrameView. 13 1 14 2010-09-17 Kenneth Russell <kbr@google.com> 2 15 -
trunk/WebKit/chromium/src/FrameLoaderClientImpl.cpp
r67749 r67762 1413 1413 1414 1414 bool zoomTextOnly = m_webFrame->viewImpl()->zoomTextOnly(); 1415 float zoomFactor = zoomTextOnly ? m_webFrame->frame()-> view()->textZoomFactor() : m_webFrame->frame()->view()->pageZoomFactor();1415 float zoomFactor = zoomTextOnly ? m_webFrame->frame()->textZoomFactor() : m_webFrame->frame()->pageZoomFactor(); 1416 1416 if (zoomFactor != 1) { 1417 1417 // There's a saved zoom level, so tell the plugin about it since -
trunk/WebKit/chromium/src/WebViewImpl.cpp
r67649 r67762 1541 1541 minTextSizeMultiplier)); 1542 1542 Frame* frame = mainFrameImpl()->frame(); 1543 FrameView* view = frame->view(); 1544 if (!view) 1545 return m_zoomLevel; 1546 1547 float oldZoomFactor = m_zoomTextOnly ? view->textZoomFactor() : view->pageZoomFactor(); 1543 1544 float oldZoomFactor = m_zoomTextOnly ? frame->textZoomFactor() : frame->pageZoomFactor(); 1548 1545 1549 1546 if (textOnly) 1550 view->setPageAndTextZoomFactors(1, zoomFactor);1547 frame->setPageAndTextZoomFactors(1, zoomFactor); 1551 1548 else 1552 view->setPageAndTextZoomFactors(zoomFactor, 1);1549 frame->setPageAndTextZoomFactors(zoomFactor, 1); 1553 1550 1554 1551 if (oldZoomFactor != zoomFactor || textOnly != m_zoomTextOnly) { -
trunk/WebKit/efl/ChangeLog
r67655 r67762 1 2010-09-17 Darin Adler <darin@apple.com> 2 3 Reviewed by Sam Weinig. 4 5 REGRESSION (r60104): Zoom level is unexpectedly reset on page reload 6 https://bugs.webkit.org/show_bug.cgi?id=42863 7 8 * ewk/ewk_frame.cpp: 9 (ewk_frame_zoom_get): 10 (ewk_frame_zoom_set): 11 (ewk_frame_zoom_text_only_set): 12 Call functions on Frame instead of FrameView. 13 1 14 2010-09-16 Darin Adler <darin@apple.com> 2 15 -
trunk/WebKit/efl/ewk/ewk_frame.cpp
r67519 r67762 1021 1021 EWK_FRAME_SD_GET_OR_RETURN(o, sd, -1.0); 1022 1022 EINA_SAFETY_ON_NULL_RETURN_VAL(sd->frame, -1.0); 1023 WebCore::FrameView* view = sd->frame->view();1024 if (!view)1025 return -1;1026 1023 1027 1024 if (sd->textZoom) 1028 return view->textZoomFactor();1029 return view->pageZoomFactor();1025 return sd->frame->textZoomFactor(); 1026 return sd->frame->pageZoomFactor(); 1030 1027 } 1031 1028 … … 1044 1041 EWK_FRAME_SD_GET_OR_RETURN(o, sd, EINA_FALSE); 1045 1042 EINA_SAFETY_ON_NULL_RETURN_VAL(sd->frame, EINA_FALSE); 1046 WebCore::FrameView* view = sd->frame->view();1047 if (!view)1048 return EINA_FALSE;1049 1043 if (sd->textZoom) 1050 view->setTextZoomFactor(zoom);1044 sd->frame->setTextZoomFactor(zoom); 1051 1045 else 1052 view->setPageZoomFactor(zoom);1046 sd->frame->setPageZoomFactor(zoom); 1053 1047 return EINA_TRUE; 1054 1048 } … … 1082 1076 return EINA_TRUE; 1083 1077 1084 WebCore::FrameView* view = sd->frame->view(); 1085 if (!view) 1086 return EINA_FALSE; 1087 1088 float zoom_level = sd->textZoom ? view->textZoomFactor() : view->pageZoomFactor(); 1078 float zoom_level = sd->textZoom ? sd->frame->textZoomFactor() : sd->frame->pageZoomFactor(); 1089 1079 sd->textZoom = setting; 1090 1080 if (sd->textZoom) 1091 view->setPageAndTextZoomFactors(1, zoom_level);1081 sd->frame->setPageAndTextZoomFactors(1, zoom_level); 1092 1082 else 1093 view->setPageAndTextZoomFactors(zoom_level, 1);1083 sd->frame->setPageAndTextZoomFactors(zoom_level, 1); 1094 1084 return EINA_TRUE; 1095 1085 } -
trunk/WebKit/gtk/ChangeLog
r67664 r67762 1 2010-09-17 Darin Adler <darin@apple.com> 2 3 Reviewed by Sam Weinig. 4 5 REGRESSION (r60104): Zoom level is unexpectedly reset on page reload 6 https://bugs.webkit.org/show_bug.cgi?id=42863 7 8 * webkit/webkitwebview.cpp: 9 (webkit_web_view_get_zoom_level): 10 (webkit_web_view_apply_zoom_level): 11 (webkit_web_view_set_full_content_zoom): 12 Call functions on Frame instead of FrameView. 13 1 14 2010-09-16 Martin Robinson <mrobinson@igalia.com> 2 15 -
trunk/WebKit/gtk/webkit/webkitwebview.cpp
r67626 r67762 4007 4007 return 1.0f; 4008 4008 4009 FrameView* view = frame->view();4010 if (!view)4011 return 1;4012 4013 4009 WebKitWebViewPrivate* priv = webView->priv; 4014 return priv->zoomFullContent ? view->pageZoomFactor() : view->textZoomFactor();4010 return priv->zoomFullContent ? frame->pageZoomFactor() : frame->textZoomFactor(); 4015 4011 } 4016 4012 … … 4021 4017 return; 4022 4018 4023 FrameView* view = frame->view();4024 if (!view)4025 return;4026 4027 4019 WebKitWebViewPrivate* priv = webView->priv; 4028 4020 if (priv->zoomFullContent) 4029 view->setPageZoomFactor(zoomLevel);4021 frame->setPageZoomFactor(zoomLevel); 4030 4022 else 4031 view->setTextZoomFactor(zoomLevel);4023 frame->setTextZoomFactor(zoomLevel); 4032 4024 } 4033 4025 … … 4136 4128 return; 4137 4129 4138 FrameView* view = frame->view(); 4139 if (!view) 4140 return; 4141 4142 gfloat zoomLevel = priv->zoomFullContent ? view->pageZoomFactor() : view->textZoomFactor(); 4130 gfloat zoomLevel = priv->zoomFullContent ? frame->pageZoomFactor() : frame->textZoomFactor(); 4143 4131 4144 4132 priv->zoomFullContent = zoomFullContent; 4145 4133 if (priv->zoomFullContent) 4146 view->setPageAndTextZoomFactors(zoomLevel, 1);4134 frame->setPageAndTextZoomFactors(zoomLevel, 1); 4147 4135 else 4148 view->setPageAndTextZoomFactors(1, zoomLevel);4136 frame->setPageAndTextZoomFactors(1, zoomLevel); 4149 4137 4150 4138 g_object_notify(G_OBJECT(webView), "full-content-zoom"); -
trunk/WebKit/mac/ChangeLog
r67758 r67762 1 2010-09-17 Darin Adler <darin@apple.com> 2 3 Reviewed by Sam Weinig. 4 5 REGRESSION (r60104): Zoom level is unexpectedly reset on page reload 6 https://bugs.webkit.org/show_bug.cgi?id=42863 7 8 * WebView/WebView.mm: 9 (-[WebView _setZoomMultiplier:isTextOnly:]): 10 Call functions on Frame instead of FrameView. 11 1 12 2010-09-17 Matthew Delaney <mdelaney@apple.com> 2 13 -
trunk/WebKit/mac/WebView/WebView.mm
r67758 r67762 3321 3321 _private->zoomsTextOnly = isTextOnly; 3322 3322 3323 // FIXME: It wouldbe nice to rework this code so that _private->zoomMultiplier doesn't exist3324 // and instead FrameView::zoomFactor isused.3323 // FIXME: It might be nice to rework this code so that _private->zoomMultiplier doesn't exist 3324 // and instead the zoom factors stored in Frame are used. 3325 3325 Frame* coreFrame = [self _mainCoreFrame]; 3326 3326 if (coreFrame) { 3327 if (FrameView* view = coreFrame->view()) { 3328 if (_private->zoomsTextOnly) 3329 view->setPageAndTextZoomFactors(1, multiplier); 3330 else 3331 view->setPageAndTextZoomFactors(multiplier, 1); 3332 } 3327 if (_private->zoomsTextOnly) 3328 coreFrame->setPageAndTextZoomFactors(1, multiplier); 3329 else 3330 coreFrame->setPageAndTextZoomFactors(multiplier, 1); 3333 3331 } 3334 3332 } -
trunk/WebKit/qt/Api/qwebframe.cpp
r67608 r67762 1133 1133 void QWebFrame::setTextSizeMultiplier(qreal factor) 1134 1134 { 1135 FrameView* view = d->frame->view();1136 if (!view)1137 return;1138 1139 1135 page()->settings()->setAttribute(QWebSettings::ZoomTextOnly, true); 1140 1136 1141 view->setPageAndTextZoomFactors(1, factor);1137 d->frame->setPageAndTextZoomFactors(1, factor); 1142 1138 } 1143 1139 … … 1147 1143 qreal QWebFrame::textSizeMultiplier() const 1148 1144 { 1149 FrameView* view = d->frame->view(); 1150 if (!view) 1151 return 1; 1152 1153 return d->zoomTextOnly ? view->textZoomFactor() : view->pageZoomFactor(); 1145 return d->zoomTextOnly ? d->frame->textZoomFactor() : d->frame->pageZoomFactor(); 1154 1146 } 1155 1147 … … 1162 1154 void QWebFrame::setZoomFactor(qreal factor) 1163 1155 { 1164 Page* page = d->frame->page();1165 if (!page)1166 return;1167 1168 FrameView* view = d->frame->view();1169 if (!view)1170 return;1171 1172 1156 if (d->zoomTextOnly) 1173 view->setTextZoomFactor(factor);1157 d->frame->setTextZoomFactor(factor); 1174 1158 else 1175 view->setPageZoomFactor(factor);1159 d->frame->setPageZoomFactor(factor); 1176 1160 } 1177 1161 1178 1162 qreal QWebFrame::zoomFactor() const 1179 1163 { 1180 FrameView* view = d->frame->view(); 1181 if (!view) 1182 return 1; 1183 1184 return d->zoomTextOnly ? view->textZoomFactor() : view->pageZoomFactor(); 1164 return d->zoomTextOnly ? d->frame->textZoomFactor() : d->frame->pageZoomFactor(); 1185 1165 } 1186 1166 -
trunk/WebKit/qt/ChangeLog
r67655 r67762 1 2010-09-17 Darin Adler <darin@apple.com> 2 3 Reviewed by Sam Weinig. 4 5 REGRESSION (r60104): Zoom level is unexpectedly reset on page reload 6 https://bugs.webkit.org/show_bug.cgi?id=42863 7 8 * Api/qwebframe.cpp: 9 (QWebFrame::setTextSizeMultiplier): 10 (QWebFrame::textSizeMultiplier): 11 (QWebFrame::setZoomFactor): 12 (QWebFrame::zoomFactor): 13 Call functions on Frame instead of FrameView. 14 1 15 2010-09-16 Darin Adler <darin@apple.com> 2 16 -
trunk/WebKit/win/ChangeLog
r67758 r67762 1 2010-09-17 Darin Adler <darin@apple.com> 2 3 Reviewed by Sam Weinig. 4 5 REGRESSION (r60104): Zoom level is unexpectedly reset on page reload 6 https://bugs.webkit.org/show_bug.cgi?id=42863 7 8 * WebView.cpp: 9 (WebView::setZoomMultiplier): 10 Call functions on Frame instead of FrameView. 11 1 12 2010-09-17 Matthew Delaney <mdelaney@apple.com> 2 13 -
trunk/WebKit/win/WebView.cpp
r67758 r67762 2937 2937 2938 2938 if (Frame* coreFrame = core(m_mainFrame)) { 2939 if (FrameView* view = coreFrame->view()) { 2940 if (m_zoomsTextOnly) 2941 view->setPageAndTextZoomFactors(1, multiplier); 2942 else 2943 view->setPageAndTextZoomFactors(multiplier, 1); 2944 } 2939 if (m_zoomsTextOnly) 2940 coreFrame->setPageAndTextZoomFactors(1, multiplier); 2941 else 2942 coreFrame->setPageAndTextZoomFactors(multiplier, 1); 2945 2943 } 2946 2944 } -
trunk/WebKit/wx/ChangeLog
r67515 r67762 1 2010-09-17 Darin Adler <darin@apple.com> 2 3 Reviewed by Sam Weinig. 4 5 REGRESSION (r60104): Zoom level is unexpectedly reset on page reload 6 https://bugs.webkit.org/show_bug.cgi?id=42863 7 8 * WebFrame.cpp: 9 (wxWebFrame::IncreaseTextSize): 10 (wxWebFrame::DecreaseTextSize): 11 (wxWebFrame::ResetTextSize): 12 Call functions on Frame instead of FrameView. 13 1 14 2010-09-14 Kevin Ollivier <kevino@theolliviers.com> 2 15 -
trunk/WebKit/wx/WebFrame.cpp
r67515 r67762 374 374 if (CanIncreaseTextSize()) { 375 375 m_textMagnifier = m_textMagnifier*TextSizeMultiplierRatio; 376 m_impl->frame-> view()->setTextZoomFactor(m_textMagnifier);376 m_impl->frame->setTextZoomFactor(m_textMagnifier); 377 377 } 378 378 } … … 391 391 if (CanDecreaseTextSize()) { 392 392 m_textMagnifier = m_textMagnifier/TextSizeMultiplierRatio; 393 m_impl->frame-> view()->setTextZoomFactor(m_textMagnifier);393 m_impl->frame->setTextZoomFactor(m_textMagnifier); 394 394 } 395 395 } … … 398 398 { 399 399 m_textMagnifier = 1.0; 400 if (m_impl->frame && m_impl->frame->view())401 m_impl->frame-> view()->setTextZoomFactor(m_textMagnifier);400 if (m_impl->frame) 401 m_impl->frame->setTextZoomFactor(m_textMagnifier); 402 402 } 403 403 -
trunk/WebKit2/ChangeLog
r67761 r67762 1 2010-09-17 Darin Adler <darin@apple.com> 2 3 Reviewed by Sam Weinig. 4 5 REGRESSION (r60104): Zoom level is unexpectedly reset on page reload 6 https://bugs.webkit.org/show_bug.cgi?id=42863 7 8 * WebProcess/WebPage/WebPage.cpp: 9 (WebKit::WebPage::textZoomFactor): 10 (WebKit::WebPage::setTextZoomFactor): 11 (WebKit::WebPage::pageZoomFactor): 12 (WebKit::WebPage::setPageZoomFactor): 13 (WebKit::WebPage::setPageAndTextZoomFactors): 14 Call functions on Frame instead of FrameView. 15 1 16 2010-09-17 Sam Weinig <sam@webkit.org> 2 17 -
trunk/WebKit2/WebProcess/WebPage/WebPage.cpp
r67761 r67762 306 306 double WebPage::textZoomFactor() const 307 307 { 308 if (Frame* coreFrame = m_mainFrame->coreFrame()) { 309 if (FrameView* view = coreFrame->view()) 310 return view->textZoomFactor(); 311 } 312 313 return 1; 308 Frame* frame = m_mainFrame->coreFrame(); 309 if (!frame) 310 return 1; 311 return frame->textZoomFactor(); 314 312 } 315 313 316 314 void WebPage::setTextZoomFactor(double zoomFactor) 317 315 { 318 if (Frame* coreFrame = m_mainFrame->coreFrame()) {319 if (FrameView* view = coreFrame->view())320 return view->setTextZoomFactor(static_cast<float>(zoomFactor));321 }316 Frame* frame = m_mainFrame->coreFrame(); 317 if (!frame) 318 return; 319 frame->setTextZoomFactor(static_cast<float>(zoomFactor)); 322 320 } 323 321 324 322 double WebPage::pageZoomFactor() const 325 323 { 326 if (Frame* coreFrame = m_mainFrame->coreFrame()) { 327 if (FrameView* view = coreFrame->view()) 328 return view->pageZoomFactor(); 329 } 330 331 return 1; 324 Frame* frame = m_mainFrame->coreFrame(); 325 if (!frame) 326 return 1; 327 return frame->pageZoomFactor(); 332 328 } 333 329 334 330 void WebPage::setPageZoomFactor(double zoomFactor) 335 331 { 336 if (Frame* coreFrame = m_mainFrame->coreFrame()) {337 if (FrameView* view = coreFrame->view())338 return view->setPageZoomFactor(static_cast<float>(zoomFactor));339 }332 Frame* frame = m_mainFrame->coreFrame(); 333 if (!frame) 334 return; 335 frame->setPageZoomFactor(static_cast<float>(zoomFactor)); 340 336 } 341 337 342 338 void WebPage::setPageAndTextZoomFactors(double pageZoomFactor, double textZoomFactor) 343 339 { 344 if (Frame* coreFrame = m_mainFrame->coreFrame()) {345 if (FrameView* view = coreFrame->view())346 return view->setPageAndTextZoomFactors(static_cast<float>(pageZoomFactor), static_cast<float>(textZoomFactor));347 }340 Frame* frame = m_mainFrame->coreFrame(); 341 if (!frame) 342 return; 343 return frame->setPageAndTextZoomFactors(static_cast<float>(pageZoomFactor), static_cast<float>(textZoomFactor)); 348 344 } 349 345
Note: See TracChangeset
for help on using the changeset viewer.