| 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
|
|
|