Index: Source/core/rendering/RenderLineBoxList.cpp |
diff --git a/Source/core/rendering/RenderLineBoxList.cpp b/Source/core/rendering/RenderLineBoxList.cpp |
index 085224721fe2d175df4b04089b452329bc0eea4c..db990d8402f7a100cc9f6e7c81517e181b7d6d98 100644 |
--- a/Source/core/rendering/RenderLineBoxList.cpp |
+++ b/Source/core/rendering/RenderLineBoxList.cpp |
@@ -176,10 +176,10 @@ bool RenderLineBoxList::anyLineIntersectsRect(RenderBoxModelObject* renderer, co |
// intersect. This is a quick short-circuit that we can take to avoid walking any lines. |
// FIXME: This check is flawed in the following extremely obscure way: |
// if some line in the middle has a huge overflow, it might actually extend below the last line. |
- RootInlineBox* firstRootBox = firstLineBox()->root(); |
- RootInlineBox* lastRootBox = lastLineBox()->root(); |
- LayoutUnit firstLineTop = firstLineBox()->logicalTopVisualOverflow(firstRootBox->lineTop()); |
- LayoutUnit lastLineBottom = lastLineBox()->logicalBottomVisualOverflow(lastRootBox->lineBottom()); |
+ RootInlineBox& firstRootBox = firstLineBox()->root(); |
+ RootInlineBox& lastRootBox = lastLineBox()->root(); |
+ LayoutUnit firstLineTop = firstLineBox()->logicalTopVisualOverflow(firstRootBox.lineTop()); |
+ LayoutUnit lastLineBottom = lastLineBox()->logicalBottomVisualOverflow(lastRootBox.lineBottom()); |
LayoutUnit logicalTop = firstLineTop - outlineSize; |
LayoutUnit logicalBottom = outlineSize + lastLineBottom; |
@@ -188,9 +188,9 @@ bool RenderLineBoxList::anyLineIntersectsRect(RenderBoxModelObject* renderer, co |
bool RenderLineBoxList::lineIntersectsDirtyRect(RenderBoxModelObject* renderer, InlineFlowBox* box, const PaintInfo& paintInfo, const LayoutPoint& offset) const |
{ |
- RootInlineBox* root = box->root(); |
- LayoutUnit logicalTop = min<LayoutUnit>(box->logicalTopVisualOverflow(root->lineTop()), root->selectionTop()) - renderer->maximalOutlineSize(paintInfo.phase); |
- LayoutUnit logicalBottom = box->logicalBottomVisualOverflow(root->lineBottom()) + renderer->maximalOutlineSize(paintInfo.phase); |
+ RootInlineBox& root = box->root(); |
+ LayoutUnit logicalTop = min<LayoutUnit>(box->logicalTopVisualOverflow(root.lineTop()), root.selectionTop()) - renderer->maximalOutlineSize(paintInfo.phase); |
+ LayoutUnit logicalBottom = box->logicalBottomVisualOverflow(root.lineBottom()) + renderer->maximalOutlineSize(paintInfo.phase); |
return rangeIntersectsRect(renderer, logicalTop, logicalBottom, paintInfo.rect, offset); |
} |
@@ -222,8 +222,8 @@ void RenderLineBoxList::paint(RenderBoxModelObject* renderer, PaintInfo& paintIn |
// based off positions of our first line box or our last line box. |
for (InlineFlowBox* curr = firstLineBox(); curr; curr = curr->nextLineBox()) { |
if (lineIntersectsDirtyRect(renderer, curr, info, paintOffset)) { |
- RootInlineBox* root = curr->root(); |
- curr->paint(info, paintOffset, root->lineTop(), root->lineBottom()); |
+ RootInlineBox& root = curr->root(); |
+ curr->paint(info, paintOffset, root.lineTop(), root.lineBottom()); |
} |
} |
@@ -260,9 +260,9 @@ bool RenderLineBoxList::hitTest(RenderBoxModelObject* renderer, const HitTestReq |
// them further. Note that boxes can easily overlap, so we can't make any assumptions |
// based off positions of our first line box or our last line box. |
for (InlineFlowBox* curr = lastLineBox(); curr; curr = curr->prevLineBox()) { |
- RootInlineBox* root = curr->root(); |
- if (rangeIntersectsRect(renderer, curr->logicalTopVisualOverflow(root->lineTop()), curr->logicalBottomVisualOverflow(root->lineBottom()), rect, accumulatedOffset)) { |
- bool inside = curr->nodeAtPoint(request, result, locationInContainer, accumulatedOffset, root->lineTop(), root->lineBottom()); |
+ RootInlineBox& root = curr->root(); |
+ if (rangeIntersectsRect(renderer, curr->logicalTopVisualOverflow(root.lineTop()), curr->logicalBottomVisualOverflow(root.lineBottom()), rect, accumulatedOffset)) { |
+ bool inside = curr->nodeAtPoint(request, result, locationInContainer, accumulatedOffset, root.lineTop(), root.lineBottom()); |
if (inside) { |
renderer->updateHitTestResult(result, locationInContainer.point() - toLayoutSize(accumulatedOffset)); |
return true; |
@@ -304,15 +304,15 @@ void RenderLineBoxList::dirtyLinesFromChangedChild(RenderObject* container, Rend |
if (curr->isReplaced()) { |
InlineBox* wrapper = toRenderBox(curr)->inlineBoxWrapper(); |
if (wrapper) |
- box = wrapper->root(); |
+ box = &wrapper->root(); |
} else if (curr->isText()) { |
InlineTextBox* textBox = toRenderText(curr)->lastTextBox(); |
if (textBox) |
- box = textBox->root(); |
+ box = &textBox->root(); |
} else if (curr->isRenderInline()) { |
InlineBox* lastSiblingBox = toRenderInline(curr)->lastLineBoxIncludingCulling(); |
if (lastSiblingBox) |
- box = lastSiblingBox->root(); |
+ box = &lastSiblingBox->root(); |
} |
if (box) |
@@ -331,7 +331,7 @@ void RenderLineBoxList::dirtyLinesFromChangedChild(RenderObject* container, Rend |
} |
return; |
} |
- box = firstBox->root(); |
+ box = &firstBox->root(); |
} |
// If we found a line box, then dirty it. |