| Index: Source/core/rendering/RenderLayerModelObject.cpp
|
| diff --git a/Source/core/rendering/RenderLayerModelObject.cpp b/Source/core/rendering/RenderLayerModelObject.cpp
|
| index 15ebfe38763c8ffa29adb8bcb6271429b466752e..4c64cc72887ae45b39ca060eaced1d2d93750b40 100644
|
| --- a/Source/core/rendering/RenderLayerModelObject.cpp
|
| +++ b/Source/core/rendering/RenderLayerModelObject.cpp
|
| @@ -211,5 +211,35 @@ void RenderLayerModelObject::setBackingNeedsPaintInvalidationInRect(const Layout
|
| }
|
| }
|
|
|
| +void RenderLayerModelObject::addChildFocusRingRects(Vector<LayoutRect>& rects, const LayoutPoint& additionalOffset) const
|
| +{
|
| + for (RenderObject* current = slowFirstChild(); current; current = current->nextSibling()) {
|
| + if (current->isText() || current->isListMarker())
|
| + continue;
|
| +
|
| + if (!current->isBox()) {
|
| + current->addFocusRingRects(rects, additionalOffset);
|
| + continue;
|
| + }
|
| +
|
| + RenderBox* box = toRenderBox(current);
|
| + if (!box->hasLayer()) {
|
| + box->addFocusRingRects(rects, additionalOffset + box->locationOffset());
|
| + continue;
|
| + }
|
| +
|
| + Vector<LayoutRect> layerFocusRingRects;
|
| + box->addFocusRingRects(layerFocusRingRects, LayoutPoint());
|
| + for (size_t i = 0; i < layerFocusRingRects.size(); ++i) {
|
| + FloatQuad quadInBox = box->localToContainerQuad(FloatQuad(layerFocusRingRects[i]), this);
|
| + LayoutRect rect = LayoutRect(quadInBox.boundingBox());
|
| + if (!rect.isEmpty()) {
|
| + rect.moveBy(additionalOffset);
|
| + rects.append(rect);
|
| + }
|
| + }
|
| + }
|
| +}
|
| +
|
| } // namespace blink
|
|
|
|
|