Index: Source/core/rendering/RenderInline.cpp |
diff --git a/Source/core/rendering/RenderInline.cpp b/Source/core/rendering/RenderInline.cpp |
index c9dfa1fe9c3de2aa59f46a6e8fedd6159886ce8d..3b11ce666732e8e107a090c417360460959699fc 100644 |
--- a/Source/core/rendering/RenderInline.cpp |
+++ b/Source/core/rendering/RenderInline.cpp |
@@ -1375,23 +1375,40 @@ void RenderInline::imageChanged(WrappedImagePtr, const IntRect*) |
namespace { |
-class AbsoluteRectsIgnoringEmptyRectsGeneratorContext : public AbsoluteRectsGeneratorContext { |
+class AbsoluteLayoutRectsGeneratorContext { |
public: |
- AbsoluteRectsIgnoringEmptyRectsGeneratorContext(Vector<IntRect>& rects, const LayoutPoint& accumulatedOffset) |
- : AbsoluteRectsGeneratorContext(rects, accumulatedOffset) { } |
+ AbsoluteLayoutRectsGeneratorContext(Vector<LayoutRect>& rects, const LayoutPoint& accumulatedOffset) |
+ : m_rects(rects) |
+ , m_accumulatedOffset(accumulatedOffset) { } |
+ |
+ void operator()(const FloatRect& rect) |
+ { |
+ LayoutRect layoutRect(rect); |
+ layoutRect.move(m_accumulatedOffset.x(), m_accumulatedOffset.y()); |
+ m_rects.append(layoutRect); |
+ } |
+private: |
+ Vector<LayoutRect>& m_rects; |
+ const LayoutPoint& m_accumulatedOffset; |
+}; |
+ |
+class AbsoluteLayoutRectsIgnoringEmptyRectsGeneratorContext : public AbsoluteLayoutRectsGeneratorContext { |
+public: |
+ AbsoluteLayoutRectsIgnoringEmptyRectsGeneratorContext(Vector<LayoutRect>& rects, const LayoutPoint& accumulatedOffset) |
+ : AbsoluteLayoutRectsGeneratorContext(rects, accumulatedOffset) { } |
void operator()(const FloatRect& rect) |
{ |
if (!rect.isEmpty()) |
- AbsoluteRectsGeneratorContext::operator()(rect); |
+ AbsoluteLayoutRectsGeneratorContext::operator()(rect); |
} |
}; |
} // unnamed namespace |
-void RenderInline::addFocusRingRects(Vector<IntRect>& rects, const LayoutPoint& additionalOffset, const RenderLayerModelObject* paintContainer) const |
+void RenderInline::addFocusRingRects(Vector<LayoutRect>& rects, const LayoutPoint& additionalOffset, const RenderLayerModelObject* paintContainer) const |
{ |
- AbsoluteRectsIgnoringEmptyRectsGeneratorContext context(rects, additionalOffset); |
+ AbsoluteLayoutRectsIgnoringEmptyRectsGeneratorContext context(rects, additionalOffset); |
generateLineBoxRects(context); |
addChildFocusRingRects(rects, additionalOffset, paintContainer); |
@@ -1401,31 +1418,10 @@ void RenderInline::addFocusRingRects(Vector<IntRect>& rects, const LayoutPoint& |
if (paintContainer != continuation()->containerForPaintInvalidation()) |
return; |
if (continuation()->isInline()) |
- continuation()->addFocusRingRects(rects, flooredLayoutPoint(additionalOffset + continuation()->containingBlock()->location() - containingBlock()->location()), paintContainer); |
+ continuation()->addFocusRingRects(rects, additionalOffset + (continuation()->containingBlock()->location() - containingBlock()->location()), paintContainer); |
else |
- continuation()->addFocusRingRects(rects, flooredLayoutPoint(additionalOffset + toRenderBox(continuation())->location() - containingBlock()->location()), paintContainer); |
- } |
-} |
- |
-namespace { |
- |
-class AbsoluteLayoutRectsGeneratorContext { |
-public: |
- AbsoluteLayoutRectsGeneratorContext(Vector<LayoutRect>& rects, const LayoutPoint& accumulatedOffset) |
- : m_rects(rects) |
- , m_accumulatedOffset(accumulatedOffset) { } |
- |
- void operator()(const FloatRect& rect) |
- { |
- LayoutRect layoutRect(rect); |
- layoutRect.move(m_accumulatedOffset.x(), m_accumulatedOffset.y()); |
- m_rects.append(layoutRect); |
+ continuation()->addFocusRingRects(rects, additionalOffset + (toRenderBox(continuation())->location() - containingBlock()->location()), paintContainer); |
} |
-private: |
- Vector<LayoutRect>& m_rects; |
- const LayoutPoint& m_accumulatedOffset; |
-}; |
- |
} |
void RenderInline::computeSelfHitTestRects(Vector<LayoutRect>& rects, const LayoutPoint& layerOffset) const |