Changeset 60104 in webkit
- Timestamp:
- May 24, 2010 5:33:16 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 34 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r60100 r60104 1 2010-05-24 Darin Adler <darin@apple.com> 2 3 Reviewed by Eric Seidel. 4 5 Move view-related functions from Frame to FrameView 6 https://bugs.webkit.org/show_bug.cgi?id=39366 7 8 Refactoring only so adds no new tests. 9 10 * WebCore.base.exp: Updated. 11 12 * css/CSSStyleSelector.cpp: 13 (WebCore::CSSStyleSelector::styleForDocument): Call zoom factor function 14 on FrameView. 15 (WebCore::CSSStyleSelector::applyProperty): Ditto. 16 (WebCore::CSSStyleSelector::getComputedSizeFromSpecifiedSize): Ditto. 17 * dom/Document.cpp: 18 (WebCore::Document::elementFromPoint): Ditto. 19 (WebCore::Document::caretRangeFromPoint): Ditto. 20 * dom/MouseRelatedEvent.cpp: 21 (WebCore::contentsX): Ditto. 22 (WebCore::contentsY): Ditto. 23 (WebCore::pageZoomFactor): Added helper function. 24 (WebCore::MouseRelatedEvent::computePageLocation): Use helper. 25 (WebCore::MouseRelatedEvent::receivedTarget): Ditto. 26 * dom/Node.cpp: 27 (WebCore::Node::dispatchMouseEvent): Call zoom factor function on FrameView. 28 (WebCore::Node::dispatchWheelEvent): Ditto. 29 * dom/Touch.cpp: 30 (WebCore::contentsX): Call zoom factor function on FrameView. 31 (WebCore::contentsY): Ditto. 32 * html/HTMLBodyElement.cpp: 33 (WebCore::adjustForZoom): Ditto. 34 (WebCore::HTMLBodyElement::setScrollLeft): Ditto. 35 (WebCore::HTMLBodyElement::setScrollTop): Ditto. 36 * html/HTMLImageElement.cpp: 37 (WebCore::HTMLImageElement::width): Ditto. 38 (WebCore::HTMLImageElement::height): Ditto. 39 * loader/ImageDocument.cpp: 40 (WebCore::pageZoomFactor): Added helper function. 41 (WebCore::ImageTokenizer::finish): Use helper function 42 (WebCore::ImageDocument::scale): Ditto. 43 (WebCore::ImageDocument::resizeImageToFit): Ditto. 44 (WebCore::ImageDocument::imageChanged): Ditto. 45 (WebCore::ImageDocument::restoreImageSize): Ditto. 46 (WebCore::ImageDocument::imageFitsInWindow): Ditto. 47 * page/DOMWindow.cpp: 48 (WebCore::DOMWindow::innerHeight): Ditto. 49 (WebCore::DOMWindow::innerWidth): Ditto. 50 (WebCore::DOMWindow::scrollX): Ditto. 51 (WebCore::DOMWindow::scrollY): Ditto. 52 (WebCore::DOMWindow::scrollTo): Ditto. 53 * page/DragController.cpp: 54 (WebCore::elementUnderMouse): Ditto. 55 56 * page/Frame.cpp: 57 (WebCore::Frame::Frame): Removed code to initialize m_zoomFactor. 58 * page/Frame.h: Moved functions to FrameView. Moved all #if to the left 59 margin to make the style consistent. Removed empty function 60 removeEditingStyleFromBodyElement. 61 62 * page/FrameView.cpp: 63 (WebCore::parentZoomFactor): Added helper function for constructor. 64 (WebCore::FrameView::FrameView): Added initialization of m_zoomFactor. 65 (WebCore::FrameView::shouldApplyTextZoom): Moved this here from Frame. 66 (WebCore::FrameView::shouldApplyPageZoom): Ditto. 67 (WebCore::FrameView::setZoomFactor): Ditto. 68 69 * page/FrameView.h: Added members moved here from Frame. 70 71 * rendering/RenderView.cpp: 72 (WebCore::RenderView::zoomFactor): Call FrameView instead of Frame. 73 * svg/SVGSVGElement.cpp: 74 (WebCore::SVGSVGElement::currentScale): Ditto. 75 (WebCore::SVGSVGElement::setCurrentScale): Ditto. 76 1 77 2010-05-24 Jer Noble <jer.noble@apple.com> 2 78 -
trunk/WebCore/WebCore.base.exp
r60092 r60104 536 536 __ZN7WebCore5Frame10findStringERKNS_6StringEbbbb 537 537 __ZN7WebCore5Frame13reapplyStylesEv 538 __ZN7WebCore5Frame13setZoomFactorEfNS_8ZoomModeE539 538 __ZN7WebCore5Frame14frameForWidgetEPKNS_6WidgetE 540 539 __ZN7WebCore5Frame15revealSelectionERKNS_15ScrollAlignmentEb … … 706 705 __ZN7WebCore9FrameView11forceLayoutEb 707 706 __ZN7WebCore9FrameView12setMediaTypeERKNS_6StringE 707 __ZN7WebCore9FrameView13setZoomFactorEfNS_8ZoomModeE 708 708 __ZN7WebCore9FrameView14adjustViewSizeEv 709 709 __ZN7WebCore9FrameView14setMarginWidthEi … … 922 922 __ZNK7WebCore5Frame30applyEditingStyleToBodyElementEv 923 923 __ZNK7WebCore5Frame31fontAttributesForSelectionStartEv 924 __ZNK7WebCore5Frame33removeEditingStyleFromBodyElementEv925 924 __ZNK7WebCore5Frame37baseWritingDirectionForSelectionStartEv 926 925 __ZNK7WebCore5Frame8settingsEv -
trunk/WebCore/css/CSSStyleSelector.cpp
r60052 r60104 1100 1100 PassRefPtr<RenderStyle> CSSStyleSelector::styleForDocument(Document* document) 1101 1101 { 1102 FrameView* view = document->view(); 1103 1102 1104 RefPtr<RenderStyle> documentStyle = RenderStyle::create(); 1103 1105 documentStyle->setDisplay(BLOCK); 1104 1106 documentStyle->setVisuallyOrdered(document->visuallyOrdered()); 1105 documentStyle->setZoom( document->frame()->pageZoomFactor());1107 documentStyle->setZoom(view ? view->pageZoomFactor() : 1); 1106 1108 1107 1109 FontDescription fontDescription; … … 4033 4035 else if (CSSPrimitiveValue::isUnitTypeLength(type)) { 4034 4036 double multiplier = zoomFactor; 4035 if (m_style->textSizeAdjust() && m_checker.m_document->frame() && m_checker.m_document->frame()->shouldApplyTextZoom()) 4036 multiplier *= m_checker.m_document->frame()->textZoomFactor(); 4037 if (m_style->textSizeAdjust()) { 4038 if (FrameView* view = m_checker.m_document->view()) { 4039 if (view->shouldApplyTextZoom()) 4040 multiplier *= view->textZoomFactor(); 4041 } 4042 } 4037 4043 lineHeight = Length(primitiveValue->computeLengthIntForLength(style(), m_rootElementStyle, multiplier), Fixed); 4038 4044 } else if (type == CSSPrimitiveValue::CSS_PERCENTAGE) … … 5919 5925 if (!useSVGZoomRules) { 5920 5926 zoomFactor = style->effectiveZoom(); 5921 if (document-> frame() && document->frame()->shouldApplyTextZoom())5922 zoomFactor *= document-> frame()->textZoomFactor();5927 if (document->view() && document->view()->shouldApplyTextZoom()) 5928 zoomFactor *= document->view()->textZoomFactor(); 5923 5929 } 5924 5930 -
trunk/WebCore/dom/Document.cpp
r60016 r60104 1010 1010 return 0; 1011 1011 1012 float zoomFactor = frame ->pageZoomFactor();1012 float zoomFactor = frameView->pageZoomFactor(); 1013 1013 IntPoint point = roundedIntPoint(FloatPoint(x * zoomFactor + view()->scrollX(), y * zoomFactor + view()->scrollY())); 1014 1014 … … 1040 1040 return 0; 1041 1041 1042 float zoomFactor = frame ->pageZoomFactor();1042 float zoomFactor = frameView->pageZoomFactor(); 1043 1043 IntPoint point = roundedIntPoint(FloatPoint(x * zoomFactor + view()->scrollX(), y * zoomFactor + view()->scrollY())); 1044 1044 -
trunk/WebCore/dom/MouseRelatedEvent.cpp
r53809 r60104 58 58 if (!frameView) 59 59 return 0; 60 return frameView->scrollX() / frame ->pageZoomFactor();60 return frameView->scrollX() / frameView->pageZoomFactor(); 61 61 } 62 62 … … 71 71 if (!frameView) 72 72 return 0; 73 return frameView->scrollY() / frame ->pageZoomFactor();73 return frameView->scrollY() / frameView->pageZoomFactor(); 74 74 } 75 75 … … 119 119 } 120 120 121 static float pageZoomFactor(UIEvent* event) 122 { 123 DOMWindow* window = event->view(); 124 if (!window) 125 return 1; 126 Frame* frame = window->frame(); 127 if (!frame) 128 return 1; 129 FrameView* view = frame->view(); 130 if (!view) 131 return 1; 132 return view->pageZoomFactor(); 133 } 134 121 135 void MouseRelatedEvent::computePageLocation() 122 136 { 123 float zoomFactor = (view() && view()->frame()) ? view()->frame()->pageZoomFactor() : 1.0f;137 float zoomFactor = pageZoomFactor(this); 124 138 setAbsoluteLocation(roundedIntPoint(FloatPoint(pageX() * zoomFactor, pageY() * zoomFactor))); 125 139 } … … 145 159 if (RenderObject* r = targ->renderer()) { 146 160 FloatPoint localPos = r->absoluteToLocal(absoluteLocation(), false, true); 147 float zoomFactor = (view() && view()->frame()) ? view()->frame()->pageZoomFactor() : 1.0f;161 float zoomFactor = pageZoomFactor(this); 148 162 m_offsetX = lroundf(localPos.x() / zoomFactor); 149 163 m_offsetY = lroundf(localPos.y() / zoomFactor); -
trunk/WebCore/dom/Node.cpp
r59776 r60104 2835 2835 int adjustedPageX = pageX; 2836 2836 int adjustedPageY = pageY; 2837 if (Frame * frame = document()->frame()) {2838 float pageZoom = frame->pageZoomFactor();2837 if (FrameView* view = document()->view()) { 2838 float pageZoom = view->pageZoomFactor(); 2839 2839 if (pageZoom != 1.0f) { 2840 2840 // Adjust our pageX and pageY to account for the page zoom. … … 2892 2892 int adjustedPageX = pos.x(); 2893 2893 int adjustedPageY = pos.y(); 2894 if (Frame * frame = document()->frame()) {2895 float pageZoom = frame->pageZoomFactor();2894 if (FrameView* view = document()->view()) { 2895 float pageZoom = view->pageZoomFactor(); 2896 2896 if (pageZoom != 1.0f) { 2897 2897 // Adjust our pageX and pageY to account for the page zoom. -
trunk/WebCore/dom/Touch.cpp
r53994 r60104 41 41 if (!frameView) 42 42 return 0; 43 return frameView->scrollX() / frame ->pageZoomFactor();43 return frameView->scrollX() / frameView->pageZoomFactor(); 44 44 } 45 45 … … 51 51 if (!frameView) 52 52 return 0; 53 return frameView->scrollY() / frame ->pageZoomFactor();53 return frameView->scrollY() / frameView->pageZoomFactor(); 54 54 } 55 55 -
trunk/WebCore/html/HTMLBodyElement.cpp
r59773 r60104 245 245 static int adjustForZoom(int value, FrameView* frameView) 246 246 { 247 float zoomFactor = frameView-> frame()->zoomFactor();247 float zoomFactor = frameView->zoomFactor(); 248 248 if (zoomFactor == 1) 249 249 return value; … … 265 265 void HTMLBodyElement::setScrollLeft(int scrollLeft) 266 266 { 267 FrameView* sview = ownerDocument()->view();268 if (sview) {269 // Update the document's layout270 document()->updateLayoutIgnorePendingStylesheets();271 sview->setScrollPosition(IntPoint(static_cast<int>(scrollLeft * sview->frame()->zoomFactor()), sview->scrollY()));272 }267 Document* document = this->document(); 268 document->updateLayoutIgnorePendingStylesheets(); 269 FrameView* view = document->view(); 270 if (!view) 271 return; 272 view->setScrollPosition(IntPoint(static_cast<int>(scrollLeft * view->zoomFactor()), view->scrollY())); 273 273 } 274 274 … … 284 284 void HTMLBodyElement::setScrollTop(int scrollTop) 285 285 { 286 FrameView* sview = ownerDocument()->view();287 if (sview) {288 // Update the document's layout289 document()->updateLayoutIgnorePendingStylesheets();290 sview->setScrollPosition(IntPoint(sview->scrollX(), static_cast<int>(scrollTop * sview->frame()->zoomFactor())));291 }286 Document* document = this->document(); 287 document->updateLayoutIgnorePendingStylesheets(); 288 FrameView* view = document->view(); 289 if (!view) 290 return; 291 view->setScrollPosition(IntPoint(view->scrollX(), static_cast<int>(scrollTop * view->zoomFactor()))); 292 292 } 293 293 -
trunk/WebCore/html/HTMLImageElement.cpp
r59773 r60104 29 29 #include "CSSValueKeywords.h" 30 30 #include "EventNames.h" 31 #include "Frame .h"31 #include "FrameView.h" 32 32 #include "HTMLDocument.h" 33 33 #include "HTMLFormElement.h" … … 256 256 // if the image is available, use its width 257 257 if (m_imageLoader.image()) { 258 float zoomFactor = document()-> frame() ? document()->frame()->pageZoomFactor() : 1.0f;258 float zoomFactor = document()->view() ? document()->view()->pageZoomFactor() : 1.0f; 259 259 return m_imageLoader.image()->imageSize(zoomFactor).width(); 260 260 } … … 280 280 // if the image is available, use its height 281 281 if (m_imageLoader.image()) { 282 float zoomFactor = document()-> frame() ? document()->frame()->pageZoomFactor() : 1.0f;282 float zoomFactor = document()->view() ? document()->view()->pageZoomFactor() : 1.0f; 283 283 return m_imageLoader.image()->imageSize(zoomFactor).height(); 284 284 } -
trunk/WebCore/loader/ImageDocument.cpp
r54049 r60104 109 109 // -------- 110 110 111 static float pageZoomFactor(Document* document) 112 { 113 FrameView* view = document->view(); 114 return view ? view->pageZoomFactor() : 1; 115 } 116 111 117 void ImageTokenizer::write(const SegmentedString&, bool) 112 118 { … … 146 152 cachedImage->setResponse(m_doc->frame()->loader()->documentLoader()->response()); 147 153 148 IntSize size = cachedImage->imageSize( m_doc->frame()->pageZoomFactor());154 IntSize size = cachedImage->imageSize(pageZoomFactor(m_doc)); 149 155 if (size.width()) { 150 156 // Compute the title, we use the decoded filename of the resource, falling … … 221 227 return 1.0f; 222 228 223 IntSize imageSize = m_imageElement->cachedImage()->imageSize(frame()->pageZoomFactor()); 224 IntSize windowSize = IntSize(frame()->view()->width(), frame()->view()->height()); 229 FrameView* view = frame()->view(); 230 if (!view) 231 return 1; 232 233 IntSize imageSize = m_imageElement->cachedImage()->imageSize(view->pageZoomFactor()); 234 IntSize windowSize = IntSize(view->width(), view->height()); 225 235 226 236 float widthScale = (float)windowSize.width() / imageSize.width(); … … 235 245 return; 236 246 237 IntSize imageSize = m_imageElement->cachedImage()->imageSize( frame()->pageZoomFactor());247 IntSize imageSize = m_imageElement->cachedImage()->imageSize(pageZoomFactor(this)); 238 248 239 249 float scale = this->scale(); … … 275 285 return; 276 286 277 if (m_imageElement->cachedImage()->imageSize( frame()->pageZoomFactor()).isEmpty())287 if (m_imageElement->cachedImage()->imageSize(pageZoomFactor(this)).isEmpty()) 278 288 return; 279 289 … … 291 301 return; 292 302 293 m_imageElement->setWidth(m_imageElement->cachedImage()->imageSize( frame()->pageZoomFactor()).width());294 m_imageElement->setHeight(m_imageElement->cachedImage()->imageSize( frame()->pageZoomFactor()).height());303 m_imageElement->setWidth(m_imageElement->cachedImage()->imageSize(pageZoomFactor(this)).width()); 304 m_imageElement->setHeight(m_imageElement->cachedImage()->imageSize(pageZoomFactor(this)).height()); 295 305 296 306 ExceptionCode ec; … … 308 318 return true; 309 319 310 IntSize imageSize = m_imageElement->cachedImage()->imageSize(frame()->pageZoomFactor()); 311 IntSize windowSize = IntSize(frame()->view()->width(), frame()->view()->height()); 320 FrameView* view = frame()->view(); 321 322 IntSize imageSize = m_imageElement->cachedImage()->imageSize(view->pageZoomFactor()); 323 IntSize windowSize = IntSize(view->width(), view->height()); 312 324 313 325 return imageSize.width() <= windowSize.width() && imageSize.height() <= windowSize.height(); -
trunk/WebCore/page/DOMWindow.cpp
r58873 r60104 955 955 return 0; 956 956 957 return static_cast<int>(view->height() / m_frame->pageZoomFactor());957 return static_cast<int>(view->height() / view->pageZoomFactor()); 958 958 } 959 959 … … 967 967 return 0; 968 968 969 return static_cast<int>(view->width() / m_frame->pageZoomFactor());969 return static_cast<int>(view->width() / view->pageZoomFactor()); 970 970 } 971 971 … … 1005 1005 m_frame->document()->updateLayoutIgnorePendingStylesheets(); 1006 1006 1007 return static_cast<int>(view->scrollX() / m_frame->pageZoomFactor());1007 return static_cast<int>(view->scrollX() / view->pageZoomFactor()); 1008 1008 } 1009 1009 … … 1019 1019 m_frame->document()->updateLayoutIgnorePendingStylesheets(); 1020 1020 1021 return static_cast<int>(view->scrollY() / m_frame->pageZoomFactor());1021 return static_cast<int>(view->scrollY() / view->pageZoomFactor()); 1022 1022 } 1023 1023 … … 1241 1241 return; 1242 1242 1243 int zoomedX = static_cast<int>(x * m_frame->pageZoomFactor());1244 int zoomedY = static_cast<int>(y * m_frame->pageZoomFactor());1243 int zoomedX = static_cast<int>(x * view->pageZoomFactor()); 1244 int zoomedY = static_cast<int>(y * view->pageZoomFactor()); 1245 1245 view->setScrollPosition(IntPoint(zoomedX, zoomedY)); 1246 1246 } -
trunk/WebCore/page/DragController.cpp
r58780 r60104 269 269 static Element* elementUnderMouse(Document* documentUnderMouse, const IntPoint& p) 270 270 { 271 float zoomFactor = documentUnderMouse->frame()->pageZoomFactor(); 271 FrameView* view = documentUnderMouse->view(); 272 float zoomFactor = view ? view->pageZoomFactor() : 1; 272 273 IntPoint point = roundedIntPoint(FloatPoint(p.x() * zoomFactor, p.y() * zoomFactor)); 273 274 -
trunk/WebCore/page/Frame.cpp
r59856 r60104 152 152 , m_excludeFromTextSearch(false) 153 153 { 154 Frame* parent = parentFromOwnerElement(ownerElement);155 m_zoomFactor = parent ? parent->m_zoomFactor : 1.0f;156 157 154 AtomicString::init(); 158 155 HTMLNames::init(); … … 611 608 } 612 609 613 ZoomMode Frame::zoomMode() const614 {615 return m_page->settings()->zoomMode();616 }617 618 bool Frame::shouldApplyTextZoom() const619 {620 return m_zoomFactor != 1.0f && zoomMode() == ZoomTextOnly;621 }622 623 bool Frame::shouldApplyPageZoom() const624 {625 return m_zoomFactor != 1.0f && zoomMode() == ZoomPage;626 }627 628 void Frame::setZoomFactor(float percent, ZoomMode mode)629 {630 if (m_zoomFactor == percent && zoomMode() == mode)631 return;632 633 #if ENABLE(SVG)634 // Respect SVGs zoomAndPan="disabled" property in standalone SVG documents.635 // FIXME: How to handle compound documents + zoomAndPan="disabled"? Needs SVG WG clarification.636 if (m_doc->isSVGDocument()) {637 if (!static_cast<SVGDocument*>(m_doc.get())->zoomAndPanEnabled())638 return;639 if (m_doc->renderer())640 m_doc->renderer()->setNeedsLayout(true);641 }642 #endif643 644 if (mode == ZoomPage) {645 // Update the scroll position when doing a full page zoom, so the content stays in relatively the same position.646 IntPoint scrollPosition = view()->scrollPosition();647 float percentDifference = (percent / m_zoomFactor);648 view()->setScrollPosition(IntPoint(scrollPosition.x() * percentDifference, scrollPosition.y() * percentDifference));649 }650 651 m_zoomFactor = percent;652 m_page->settings()->setZoomMode(mode);653 654 m_doc->recalcStyle(Node::Force);655 656 for (Frame* child = tree()->firstChild(); child; child = child->tree()->nextSibling())657 child->setZoomFactor(m_zoomFactor, mode);658 659 if (m_doc->renderer() && m_doc->renderer()->needsLayout() && view()->didFirstLayout())660 view()->layout();661 }662 663 610 void Frame::setPrinting(bool printing, float minPageWidth, float maxPageWidth, bool adjustViewSize) 664 611 { … … 933 880 for (unsigned i = 0; i < len; i++) 934 881 applyEditingStyleToElement(static_cast<Element*>(list->item(i))); 935 }936 937 void Frame::removeEditingStyleFromBodyElement() const938 {939 // FIXME: This function does nothing. We should either implement it940 // or remove it along with all call sites.941 882 } 942 883 -
trunk/WebCore/page/Frame.h
r59634 r60104 150 150 151 151 void keepAlive(); // Used to keep the frame alive when running a script that might destroy it. 152 152 #ifndef NDEBUG 153 153 static void cancelAllKeepAlive(); 154 154 #endif 155 155 156 156 void setDocument(PassRefPtr<Document>); … … 190 190 void lifeSupportTimerFired(Timer<Frame>*); 191 191 192 // === to be moved into FrameView193 194 public:195 void setZoomFactor(float scale, ZoomMode);196 float zoomFactor() const;197 ZoomMode zoomMode() const;198 bool shouldApplyTextZoom() const;199 bool shouldApplyPageZoom() const;200 float pageZoomFactor() const { return shouldApplyPageZoom() ? zoomFactor() : 1.0f; }201 float textZoomFactor() const { return shouldApplyTextZoom() ? zoomFactor() : 1.0f; }202 203 192 // === to be moved into Chrome 204 193 … … 226 215 String selectionStartStylePropertyValue(int stylePropertyID) const; 227 216 void applyEditingStyleToBodyElement() const; 228 void removeEditingStyleFromBodyElement() const;229 217 void applyEditingStyleToElement(Element*) const; 230 218 … … 286 274 VisiblePosition visiblePositionForPoint(const IntPoint& framePoint); 287 275 Document* documentAtPoint(const IntPoint& windowPoint); 288 276 277 #if ENABLE(TILED_BACKING_STORE) 278 289 279 private: 290 #if ENABLE(TILED_BACKING_STORE)291 280 // TiledBackingStoreClient interface 292 281 virtual void tiledBackingStorePaintBegin(); … … 297 286 #endif 298 287 299 288 #if PLATFORM(MAC) 300 289 301 290 // === undecided, would like to consider moving to another class … … 306 295 NSString* matchLabelsAgainstElement(NSArray* labels, Element*); 307 296 308 297 #if ENABLE(DASHBOARD_SUPPORT) 309 298 NSMutableDictionary* dashboardRegionsDictionary(); 310 299 #endif 311 300 312 301 NSImage* selectionImage(bool forceBlackText = false) const; … … 323 312 NSWritingDirection baseWritingDirectionForSelectionStart() const; 324 313 325 326 327 314 #endif 315 316 #if PLATFORM(WIN) 328 317 329 318 public: … … 331 320 HBITMAP nodeImage(Node*) const; 332 321 333 322 #endif 334 323 335 324 private: … … 351 340 String m_kjsDefaultStatusBarText; 352 341 353 float m_zoomFactor;354 355 342 mutable SelectionController m_selectionController; 356 343 mutable VisibleSelection m_mark; … … 438 425 } 439 426 440 inline float Frame::zoomFactor() const441 {442 return m_zoomFactor;443 }444 445 427 inline String Frame::jsStatusBarText() const 446 428 { -
trunk/WebCore/page/FrameView.cpp
r59396 r60104 108 108 }; 109 109 110 static inline float parentZoomFactor(Frame* frame) 111 { 112 Frame* parent = frame->tree()->parent(); 113 if (!parent) 114 return 1; 115 FrameView* parentView = parent->view(); 116 if (!parentView) 117 return 1; 118 return parentView->zoomFactor(); 119 } 120 110 121 FrameView::FrameView(Frame* frame) 111 122 : m_frame(frame) … … 129 140 , m_setNeedsLayoutWasDeferred(false) 130 141 , m_scrollCorner(0) 142 , m_zoomFactor(parentZoomFactor(frame)) 131 143 { 132 144 init(); … … 2131 2143 } 2132 2144 2145 bool FrameView::shouldApplyTextZoom() const 2146 { 2147 if (m_zoomFactor == 1) 2148 return false; 2149 if (!m_frame) 2150 return false; 2151 Page* page = m_frame->page(); 2152 return page && page->settings()->zoomMode() == ZoomTextOnly; 2153 } 2154 2155 bool FrameView::shouldApplyPageZoom() const 2156 { 2157 if (m_zoomFactor == 1) 2158 return false; 2159 if (!m_frame) 2160 return false; 2161 Page* page = m_frame->page(); 2162 return page && page->settings()->zoomMode() == ZoomPage; 2163 } 2164 2165 void FrameView::setZoomFactor(float percent, ZoomMode mode) 2166 { 2167 if (!m_frame) 2168 return; 2169 2170 Page* page = m_frame->page(); 2171 if (!page) 2172 return; 2173 2174 if (m_zoomFactor == percent && page->settings()->zoomMode() == mode) 2175 return; 2176 2177 Document* document = m_frame->document(); 2178 if (!document) 2179 return; 2180 2181 #if ENABLE(SVG) 2182 // Respect SVGs zoomAndPan="disabled" property in standalone SVG documents. 2183 // FIXME: How to handle compound documents + zoomAndPan="disabled"? Needs SVG WG clarification. 2184 if (document->isSVGDocument()) { 2185 if (!static_cast<SVGDocument*>(document)->zoomAndPanEnabled()) 2186 return; 2187 if (document->renderer()) 2188 document->renderer()->setNeedsLayout(true); 2189 } 2190 #endif 2191 2192 if (mode == ZoomPage) { 2193 // Update the scroll position when doing a full page zoom, so the content stays in relatively the same position. 2194 IntPoint scrollPosition = this->scrollPosition(); 2195 float percentDifference = (percent / m_zoomFactor); 2196 setScrollPosition(IntPoint(scrollPosition.x() * percentDifference, scrollPosition.y() * percentDifference)); 2197 } 2198 2199 m_zoomFactor = percent; 2200 page->settings()->setZoomMode(mode); 2201 2202 document->recalcStyle(Node::Force); 2203 2204 for (Frame* child = m_frame->tree()->firstChild(); child; child = child->tree()->nextSibling()) { 2205 if (FrameView* childView = child->view()) 2206 childView->setZoomFactor(m_zoomFactor, mode); 2207 } 2208 2209 if (document->renderer() && document->renderer()->needsLayout() && didFirstLayout()) 2210 layout(); 2211 } 2212 2133 2213 } // namespace WebCore -
trunk/WebCore/page/FrameView.h
r59338 r60104 215 215 void invalidateScrollCorner(); 216 216 217 void setZoomFactor(float scale, ZoomMode); 218 float zoomFactor() const { return m_zoomFactor; } 219 bool shouldApplyTextZoom() const; 220 bool shouldApplyPageZoom() const; 221 float pageZoomFactor() const { return shouldApplyPageZoom() ? m_zoomFactor : 1.0f; } 222 float textZoomFactor() const { return shouldApplyTextZoom() ? m_zoomFactor : 1.0f; } 223 217 224 private: 218 225 FrameView(Frame*); … … 288 295 unsigned m_fixedObjectCount; 289 296 290 int m_borderX, m_borderY; 297 int m_borderX; 298 int m_borderY; 291 299 292 300 Timer<FrameView> m_layoutTimer; … … 344 352 // Renderer to hold our custom scroll corner. 345 353 RenderScrollbarPart* m_scrollCorner; 354 355 float m_zoomFactor; 346 356 }; 347 357 -
trunk/WebCore/rendering/RenderView.cpp
r59513 r60104 645 645 float RenderView::zoomFactor() const 646 646 { 647 if (m_frameView->frame() && m_frameView->frame()->shouldApplyPageZoom()) 648 return m_frameView->frame()->zoomFactor(); 649 650 return 1.0f; 647 if (!m_frameView->shouldApplyPageZoom()) 648 return 1; 649 return m_frameView->zoomFactor(); 651 650 } 652 651 -
trunk/WebCore/svg/SVGSVGElement.cpp
r59773 r60104 34 34 #include "FloatConversion.h" 35 35 #include "FloatRect.h" 36 #include "Frame .h"36 #include "FrameView.h" 37 37 #include "HTMLNames.h" 38 38 #include "RenderSVGRoot.h" … … 189 189 { 190 190 // Only the page zoom factor is relevant for SVG 191 if (Frame * frame = document()->frame())192 return frame->pageZoomFactor();191 if (FrameView* view = document()->view()) 192 return view->pageZoomFactor(); 193 193 return m_scale; 194 194 } … … 196 196 void SVGSVGElement::setCurrentScale(float scale) 197 197 { 198 if (Frame * frame = document()->frame()) {198 if (FrameView* view = document()->view()) { 199 199 // Calling setCurrentScale() on the outermost <svg> element in a standalone SVG document 200 200 // is allowed to change the page zoom factor, influencing the document size, scrollbars etc. 201 201 if (parentNode() == document()) 202 frame->setZoomFactor(scale, ZoomPage);202 view->setZoomFactor(scale, ZoomPage); 203 203 return; 204 204 } -
trunk/WebKit/ChangeLog
r59537 r60104 1 2010-05-24 Darin Adler <darin@apple.com> 2 3 Reviewed by Eric Seidel. 4 5 Move view-related functions from Frame to FrameView 6 https://bugs.webkit.org/show_bug.cgi?id=39366 7 8 * efl/ewk/ewk_frame.cpp: 9 (ewk_frame_editable_set): Removed call to empty function, 10 removeEditingStyleFromBodyElement. 11 (ewk_frame_zoom_get): Call function on FrameView. 12 (ewk_frame_zoom_set): Ditto. 13 (ewk_frame_zoom_text_only_set): Ditto. 14 1 15 2010-05-15 Leandro Pereira <leandro@profusion.mobi> 2 16 -
trunk/WebKit/chromium/ChangeLog
r60086 r60104 1 2010-05-24 Darin Adler <darin@apple.com> 2 3 Reviewed by Eric Seidel. 4 5 Move view-related functions from Frame to FrameView 6 https://bugs.webkit.org/show_bug.cgi?id=39366 7 8 * src/WebViewImpl.cpp: 9 (WebKit::WebViewImpl::setZoomLevel): Call setZoomLevel on FrameView. 10 1 11 2010-05-24 Anders Carlsson <andersca@apple.com> 2 12 -
trunk/WebKit/chromium/src/WebViewImpl.cpp
r60086 r60104 1462 1462 minTextSizeMultiplier)); 1463 1463 Frame* frame = mainFrameImpl()->frame(); 1464 FrameView* view = frame->view(); 1465 if (!view) 1466 return m_zoomLevel; 1464 1467 if (zoomFactor != frame->zoomFactor()) { 1465 1468 m_zoomLevel = zoomLevel; 1466 frame->setZoomFactor(zoomFactor, textOnly ? ZoomTextOnly : ZoomPage);1469 view->setZoomFactor(zoomFactor, textOnly ? ZoomTextOnly : ZoomPage); 1467 1470 } 1468 1471 return m_zoomLevel; -
trunk/WebKit/efl/ewk/ewk_frame.cpp
r58121 r60104 635 635 if (editable) 636 636 sd->frame->applyEditingStyleToBodyElement(); 637 else638 sd->frame->removeEditingStyleFromBodyElement();639 637 return EINA_TRUE; 640 638 } … … 972 970 EWK_FRAME_SD_GET_OR_RETURN(o, sd, -1.0); 973 971 EINA_SAFETY_ON_NULL_RETURN_VAL(sd->frame, -1.0); 974 return sd->frame->zoomFactor(); 972 FrameView* view = sd->frame->view(); 973 if (!view) 974 return -1; 975 return view->zoomFactor(); 975 976 } 976 977 … … 994 995 else 995 996 zoomMode = WebCore::ZoomPage; 996 sd->frame->setZoomFactor(zoom, zoomMode); 997 FrameView* view = sd->frame->view(); 998 if (!view) 999 return EINA_FALSE; 1000 view->setZoomFactor(zoom, zoomMode); 997 1001 return EINA_TRUE; 998 1002 } … … 1033 1037 else 1034 1038 zoomMode = WebCore::ZoomPage; 1035 sd->frame->setZoomFactor(sd->frame->zoomFactor(), zoomMode); 1039 FrameView* view = sd->frame->view(); 1040 if (!view) 1041 return EINA_FALSE; 1042 view->setZoomFactor(view->zoomFactor(), zoomMode); 1036 1043 return EINA_TRUE; 1037 1044 } -
trunk/WebKit/gtk/ChangeLog
r60010 r60104 1 2010-05-24 Darin Adler <darin@apple.com> 2 3 Reviewed by Eric Seidel. 4 5 Move view-related functions from Frame to FrameView 6 https://bugs.webkit.org/show_bug.cgi?id=39366 7 8 * webkit/webkitwebview.cpp: 9 (webkit_web_view_set_editable): Remove call to empty function 10 removeEditngStyleFromBodyElement. 11 (webkit_web_view_get_zoom_level): Call functions on FrameView. 12 (webkit_web_view_apply_zoom_level): Ditto. 13 1 14 2010-05-22 Martin Robinson <mrobinson@igalia.com> 2 15 -
trunk/WebKit/gtk/webkit/webkitwebview.cpp
r60010 r60104 3637 3637 //if (!webkit_web_view_get_selected_dom_range(webView)) 3638 3638 // mainFrame->setSelectionFromNone(); 3639 } else 3640 frame->removeEditingStyleFromBodyElement(); 3639 } 3641 3640 g_object_notify(G_OBJECT(webView), "editable"); 3642 3641 } … … 3762 3761 return 1.0f; 3763 3762 3764 return frame->zoomFactor(); 3763 FrameView* view = frame->view(); 3764 if (!view) 3765 return 1; 3766 3767 return view->zoomFactor(); 3765 3768 } 3766 3769 … … 3771 3774 return; 3772 3775 3776 FrameView* view = frame->view(); 3777 if (!view) 3778 return; 3779 3773 3780 WebKitWebViewPrivate* priv = webView->priv; 3774 frame->setZoomFactor(zoomLevel, priv->zoomFullContent ? ZoomPage : ZoomTextOnly);3781 view->setZoomFactor(zoomLevel, priv->zoomFullContent ? ZoomPage : ZoomTextOnly); 3775 3782 } 3776 3783 -
trunk/WebKit/mac/ChangeLog
r59956 r60104 1 2010-05-24 Darin Adler <darin@apple.com> 2 3 Reviewed by Eric Seidel. 4 5 Move view-related functions from Frame to FrameView 6 https://bugs.webkit.org/show_bug.cgi?id=39366 7 8 * WebView/WebView.mm: 9 (-[WebView _setZoomMultiplier:isTextOnly:]): Call function on FrameView. 10 (-[WebView setEditable:]): Get rid of call to empty function, 11 removeEditingStyleFromBodyElement. 12 1 13 2010-05-21 David Hyatt <hyatt@apple.com> 2 14 -
trunk/WebKit/mac/WebView/WebView.mm
r59935 r60104 3184 3184 } 3185 3185 3186 - (void)_setZoomMultiplier:(float)m isTextOnly:(BOOL)isTextOnly3186 - (void)_setZoomMultiplier:(float)multiplier isTextOnly:(BOOL)isTextOnly 3187 3187 { 3188 3188 // NOTE: This has no visible effect when viewing a PDF (see <rdar://problem/4737380>) 3189 _private->zoomMultiplier = m; 3189 _private->zoomMultiplier = multiplier; 3190 3190 3191 ASSERT(_private->page); 3191 3192 if (_private->page) 3192 3193 _private->page->settings()->setZoomMode(isTextOnly ? ZoomTextOnly : ZoomPage); 3193 3194 // FIXME: it would be nice to rework this code so that _private->zoomMultiplier doesn't exist and callers3195 // a ll access _private->page->settings().3194 3195 // FIXME: It would be nice to rework this code so that _private->zoomMultiplier doesn't exist 3196 // and instead FrameView::zoomFactor is used. 3196 3197 Frame* coreFrame = [self _mainCoreFrame]; 3197 if (coreFrame) 3198 coreFrame->setZoomFactor(m, isTextOnly ? ZoomTextOnly : ZoomPage); 3198 if (coreFrame) { 3199 if (FrameView* view = coreFrame->view()) 3200 view->setZoomFactor(multiplier, isTextOnly ? ZoomTextOnly : ZoomPage); 3201 } 3199 3202 } 3200 3203 … … 4665 4668 if (![self selectedDOMRange]) 4666 4669 mainFrame->setSelectionFromNone(); 4667 } else 4668 mainFrame->removeEditingStyleFromBodyElement(); 4670 } 4669 4671 } 4670 4672 } -
trunk/WebKit/qt/Api/qwebframe.cpp
r59456 r60104 1080 1080 void QWebFrame::setTextSizeMultiplier(qreal factor) 1081 1081 { 1082 d->frame->setZoomFactor(factor, ZoomTextOnly); 1082 FrameView* view = d->frame->view(); 1083 if (!view) 1084 return; 1085 1086 view->setZoomFactor(factor, ZoomTextOnly); 1083 1087 } 1084 1088 … … 1088 1092 qreal QWebFrame::textSizeMultiplier() const 1089 1093 { 1090 return d->frame->zoomFactor(); 1094 FrameView* view = d->frame->view(); 1095 if (!view) 1096 return 1; 1097 1098 return view->zoomFactor(); 1091 1099 } 1092 1100 … … 1099 1107 void QWebFrame::setZoomFactor(qreal factor) 1100 1108 { 1101 d->frame->setZoomFactor(factor, d->frame->zoomMode()); 1109 Page* page = d->frame->page(); 1110 if (!page) 1111 return; 1112 1113 FrameView* view = d->frame->view(); 1114 if (!view) 1115 return; 1116 1117 view->setZoomFactor(factor, page->settings()->zoomMode()); 1102 1118 } 1103 1119 1104 1120 qreal QWebFrame::zoomFactor() const 1105 1121 { 1106 return d->frame->zoomFactor(); 1122 FrameView* view = d->frame->view(); 1123 if (!view) 1124 return 1; 1125 1126 return view->zoomFactor(); 1107 1127 } 1108 1128 -
trunk/WebKit/qt/Api/qwebpage.cpp
r60030 r60104 2639 2639 // FIXME: mac port calls this if there is no selectedDOMRange 2640 2640 //frame->setSelectionFromNone(); 2641 } else 2642 frame->removeEditingStyleFromBodyElement(); 2641 } 2643 2642 } 2644 2643 -
trunk/WebKit/qt/ChangeLog
r60041 r60104 1 2010-05-24 Darin Adler <darin@apple.com> 2 3 Reviewed by Eric Seidel. 4 5 Move view-related functions from Frame to FrameView 6 https://bugs.webkit.org/show_bug.cgi?id=39366 7 8 * Api/qwebframe.cpp: 9 (QWebFrame::setTextSizeMultiplier): Call functions on FrameView. 10 (QWebFrame::textSizeMultiplier): Ditto. 11 (QWebFrame::setZoomFactor): Ditto. 12 (QWebFrame::zoomFactor): Ditto. 13 * Api/qwebpage.cpp: 14 (QWebPage::setContentEditable): Removed call to empty function, 15 removeEditingStyleFromBodyElement. 16 1 17 2010-05-23 Noam Rosenthal <noam.rosenthal@nokia.com> 2 18 -
trunk/WebKit/win/ChangeLog
r60080 r60104 1 2010-05-24 Darin Adler <darin@apple.com> 2 3 Reviewed by Eric Seidel. 4 5 Move view-related functions from Frame to FrameView 6 https://bugs.webkit.org/show_bug.cgi?id=39366 7 8 * WebFrame.cpp: 9 (WebFrame::setTextSizeMultiplier): Call function on FrameView. 10 * WebView.cpp: 11 (WebView::setZoomMultiplier): Ditto. 12 1 13 2010-05-24 Anders Carlsson <andersca@apple.com> 2 14 -
trunk/WebKit/win/WebFrame.cpp
r60093 r60104 1104 1104 Frame* coreFrame = core(this); 1105 1105 ASSERT(coreFrame); 1106 coreFrame->setZoomFactor(multiplier, ZoomTextOnly); 1106 1107 if (FrameView* view = coreFrame->view()) 1108 view->setZoomFactor(multiplier, ZoomTextOnly); 1107 1109 } 1108 1110 -
trunk/WebKit/win/WebView.cpp
r60080 r60104 2913 2913 m_zoomMultiplier = multiplier; 2914 2914 m_page->settings()->setZoomMode(isTextOnly ? ZoomTextOnly : ZoomPage); 2915 if (Frame* coreFrame = core(m_mainFrame)) 2916 coreFrame->setZoomFactor(multiplier, isTextOnly ? ZoomTextOnly : ZoomPage); 2915 if (Frame* coreFrame = core(m_mainFrame)) { 2916 if (FrameView* view = coreFrame->view()) 2917 view->setZoomFactor(multiplier, isTextOnly ? ZoomTextOnly : ZoomPage); 2918 } 2917 2919 } 2918 2920 -
trunk/WebKit/wx/ChangeLog
r59184 r60104 1 2010-05-24 Darin Adler <darin@apple.com> 2 3 Reviewed by Eric Seidel. 4 5 Move view-related functions from Frame to FrameView 6 https://bugs.webkit.org/show_bug.cgi?id=39366 7 8 * WebFrame.cpp: 9 (wxWebFrame::CanIncreaseTextSize): Check FrameView is not null. 10 (wxWebFrame::IncreaseTextSize): Call function on FrameView. 11 (wxWebFrame::CanDecreaseTextSize): Ditto. 12 (wxWebFrame::DecreaseTextSize): Ditto. 13 (wxWebFrame::ResetTextSize): Ditto. 14 1 15 2010-05-11 Kevin Watters <kevinwatters@gmail.com> 2 16 -
trunk/WebKit/wx/WebFrame.cpp
r58699 r60104 306 306 bool wxWebFrame::CanIncreaseTextSize() const 307 307 { 308 if (m_impl->frame ) {308 if (m_impl->frame && m_impl->frame->view()) { 309 309 if (m_textMagnifier*TextSizeMultiplierRatio <= MaximumTextSizeMultiplier) 310 310 return true; … … 317 317 if (CanIncreaseTextSize()) { 318 318 m_textMagnifier = m_textMagnifier*TextSizeMultiplierRatio; 319 m_impl->frame-> setZoomFactor(m_textMagnifier, WebCore::ZoomTextOnly);319 m_impl->frame->view()->setZoomFactor(m_textMagnifier, WebCore::ZoomTextOnly); 320 320 } 321 321 } … … 323 323 bool wxWebFrame::CanDecreaseTextSize() const 324 324 { 325 if (m_impl->frame ) {325 if (m_impl->frame && m_impl->frame->view()) { 326 326 if (m_textMagnifier/TextSizeMultiplierRatio >= MinimumTextSizeMultiplier) 327 327 return true; … … 334 334 if (CanDecreaseTextSize()) { 335 335 m_textMagnifier = m_textMagnifier/TextSizeMultiplierRatio; 336 m_impl->frame-> setZoomFactor(m_textMagnifier, WebCore::ZoomTextOnly);336 m_impl->frame->view()->setZoomFactor(m_textMagnifier, WebCore::ZoomTextOnly); 337 337 } 338 338 } … … 341 341 { 342 342 m_textMagnifier = 1.0; 343 if (m_impl->frame )344 m_impl->frame-> setZoomFactor(m_textMagnifier, WebCore::ZoomTextOnly);343 if (m_impl->frame && m_impl->frame->view()) 344 m_impl->frame->view()->setZoomFactor(m_textMagnifier, WebCore::ZoomTextOnly); 345 345 } 346 346
Note: See TracChangeset
for help on using the changeset viewer.