Index: third_party/WebKit/Source/core/layout/svg/LayoutSVGText.cpp |
diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGText.cpp b/third_party/WebKit/Source/core/layout/svg/LayoutSVGText.cpp |
index e5688e916c765961501517c8839e90f135f2aaea..a64f5e1ab3c5e88a067713275914f04df7ee939a 100644 |
--- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGText.cpp |
+++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGText.cpp |
@@ -249,17 +249,14 @@ void LayoutSVGText::layout() { |
m_needsReordering = false; |
- // If we don't have any line boxes, then make sure the frame rect is still |
- // cleared. |
- if (!firstLineBox()) |
- setFrameRect(LayoutRect()); |
+ FloatRect newBoundaries = objectBoundingBox(); |
+ if (!updateParentBoundaries) |
+ updateParentBoundaries = oldBoundaries != newBoundaries; |
m_overflow.reset(); |
+ addSelfVisualOverflow(LayoutRect(newBoundaries)); |
addVisualEffectOverflow(); |
- if (!updateParentBoundaries) |
- updateParentBoundaries = oldBoundaries != objectBoundingBox(); |
- |
// Invalidate all resources of this client if our layout changed. |
if (everHadLayout() && selfNeedsLayout()) |
SVGResourcesCache::clientLayoutChanged(this); |
@@ -330,7 +327,9 @@ PositionWithAffinity LayoutSVGText::positionForPoint( |
return createPositionWithAffinity(0); |
LayoutPoint clippedPointInContents(pointInContents); |
+ clippedPointInContents.moveBy(-rootBox->topLeft()); |
clippedPointInContents.clampNegativeToZero(); |
+ clippedPointInContents.moveBy(rootBox->topLeft()); |
ASSERT(!rootBox->nextRootBox()); |
ASSERT(childrenInline()); |
@@ -354,6 +353,12 @@ void LayoutSVGText::paint(const PaintInfo& paintInfo, |
SVGTextPainter(*this).paint(paintInfo); |
} |
+FloatRect LayoutSVGText::objectBoundingBox() const { |
+ if (const RootInlineBox* box = firstRootBox()) |
+ return FloatRect(box->frameRect()); |
+ return FloatRect(); |
+} |
+ |
FloatRect LayoutSVGText::strokeBoundingBox() const { |
FloatRect strokeBoundaries = objectBoundingBox(); |
const SVGComputedStyle& svgStyle = style()->svgStyle(); |
@@ -378,6 +383,12 @@ FloatRect LayoutSVGText::visualRectInLocalSVGCoordinates() const { |
return visualRect; |
} |
+void LayoutSVGText::addOutlineRects(Vector<LayoutRect>& rects, |
+ const LayoutPoint&, |
+ IncludeBlockVisualOverflowOrNot) const { |
+ rects.append(LayoutRect(objectBoundingBox())); |
+} |
+ |
bool LayoutSVGText::isObjectBoundingBoxValid() const { |
// If we don't have any line boxes, then consider the bbox invalid. |
return firstLineBox(); |