Changeset 225512 in webkit
- Timestamp:
- Dec 4, 2017, 5:37:20 PM (8 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
-
ChangeLog (modified) (1 diff)
-
page/FrameView.cpp (modified) (5 diffs)
-
platform/graphics/FloatPoint.h (modified) (1 diff)
-
rendering/RenderBox.cpp (modified) (1 diff)
-
rendering/RenderBox.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r225511 r225512 1 2017-12-04 Simon Fraser <simon.fraser@apple.com> 2 3 Cleanup code that computes iframe content offsets in FrameView 4 https://bugs.webkit.org/show_bug.cgi?id=180385 5 6 Reviewed by Zalan Bujtas. 7 8 The coordinate conversion functions in FrameView explicitly added borderLeft/paddingLeft 9 and borderTop/paddingTop to compute the offset from the contents of a frame to its parent renderer. 10 11 This is equivalent to the call to contextBoxRect() that RenderWidget::updateWidgetGeometry() does, 12 which also takes left-side scrollbars into account. 13 14 Coordinate offsets don't need height and width, so add RenderBox::contentBoxLocation() that just 15 computes the top left, and use it in FrameView. 16 17 * page/FrameView.cpp: 18 (WebCore::FrameView::invalidateRect): 19 (WebCore::FrameView::convertToContainingView const): 20 (WebCore::FrameView::convertFromContainingView const): 21 * platform/graphics/FloatPoint.h: 22 (WebCore::FloatPoint::scaled const): 23 (WebCore::FloatPoint::scaled): Deleted. 24 * rendering/RenderBox.cpp: 25 (WebCore::RenderBox::contentBoxLocation const): 26 * rendering/RenderBox.h: 27 1 28 2017-12-04 Nan Wang <n_wang@apple.com> 2 29 -
trunk/Source/WebCore/page/FrameView.cpp
r225449 r225512 431 431 432 432 IntRect repaintRect = rect; 433 repaintRect.move (renderer->borderLeft() + renderer->paddingLeft(), renderer->borderTop() + renderer->paddingTop());433 repaintRect.moveBy(roundedIntPoint(renderer->contentBoxLocation())); 434 434 renderer->repaintRectangle(repaintRect); 435 435 } … … 4385 4385 return localRect; 4386 4386 4387 IntRect rect(localRect); 4388 // Add borders and padding?? 4389 rect.move(renderer->borderLeft() + renderer->paddingLeft(), 4390 renderer->borderTop() + renderer->paddingTop()); 4387 auto rect = localRect; 4388 rect.moveBy(roundedIntPoint(renderer->contentBoxLocation())); 4391 4389 return parentView.convertFromRendererToContainingView(renderer, rect); 4392 4390 } … … 4409 4407 return parentRect; 4410 4408 4411 IntRect rect = parentView.convertFromContainingViewToRenderer(renderer, parentRect); 4412 // Subtract borders and padding 4413 rect.move(-renderer->borderLeft() - renderer->paddingLeft(), 4414 -renderer->borderTop() - renderer->paddingTop()); 4409 auto rect = parentView.convertFromContainingViewToRenderer(renderer, parentRect); 4410 rect.moveBy(-roundedIntPoint(renderer->contentBoxLocation())); 4415 4411 return rect; 4416 4412 } … … 4433 4429 return localPoint; 4434 4430 4435 IntPoint point(localPoint); 4436 4437 // Add borders and padding 4438 point.move(renderer->borderLeft() + renderer->paddingLeft(), 4439 renderer->borderTop() + renderer->paddingTop()); 4431 auto point = localPoint; 4432 point.moveBy(roundedIntPoint(renderer->contentBoxLocation())); 4440 4433 return parentView.convertFromRendererToContainingView(renderer, point); 4441 4434 } … … 4458 4451 return parentPoint; 4459 4452 4460 IntPoint point = parentView.convertFromContainingViewToRenderer(renderer, parentPoint); 4461 // Subtract borders and padding 4462 point.move(-renderer->borderLeft() - renderer->paddingLeft(), 4463 -renderer->borderTop() - renderer->paddingTop()); 4453 auto point = parentView.convertFromContainingViewToRenderer(renderer, parentPoint); 4454 point.moveBy(-roundedIntPoint(renderer->contentBoxLocation())); 4464 4455 return point; 4465 4456 } -
trunk/Source/WebCore/platform/graphics/FloatPoint.h
r220503 r225512 128 128 } 129 129 130 FloatPoint scaled(float scale) 130 FloatPoint scaled(float scale) const 131 131 { 132 132 return { m_x * scale, m_y * scale }; 133 133 } 134 134 135 FloatPoint scaled(float scaleX, float scaleY) 135 FloatPoint scaled(float scaleX, float scaleY) const 136 136 { 137 137 return { m_x * scaleX, m_y * scaleY }; -
trunk/Source/WebCore/rendering/RenderBox.cpp
r225101 r225512 661 661 LayoutRect RenderBox::contentBoxRect() const 662 662 { 663 LayoutUnit x = borderLeft() + paddingLeft(); 664 if (shouldPlaceBlockDirectionScrollbarOnLeft()) 665 x += verticalScrollbarWidth(); 666 LayoutUnit y = borderTop() + paddingTop(); 667 return LayoutRect(x, y, contentWidth(), contentHeight()); 663 return { contentBoxLocation(), contentSize() }; 664 } 665 666 LayoutPoint RenderBox::contentBoxLocation() const 667 { 668 LayoutUnit scrollbarSpace = shouldPlaceBlockDirectionScrollbarOnLeft() ? verticalScrollbarWidth() : 0; 669 return { borderLeft() + paddingLeft() + scrollbarSpace, borderTop() + paddingTop() }; 668 670 } 669 671 -
trunk/Source/WebCore/rendering/RenderBox.h
r224537 r225512 161 161 // The content area of the box (excludes padding - and intrinsic padding for table cells, etc... - and border). 162 162 LayoutRect contentBoxRect() const; 163 LayoutPoint contentBoxLocation() const; 164 163 165 // The content box in absolute coords. Ignores transforms. 164 166 IntRect absoluteContentBox() const;
Note:
See TracChangeset
for help on using the changeset viewer.