Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(330)

Unified Diff: Source/core/rendering/RenderBox.cpp

Issue 492053002: Use LayoutRect during addFocusRingRects to avoid loss of precision (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/rendering/RenderBox.cpp
diff --git a/Source/core/rendering/RenderBox.cpp b/Source/core/rendering/RenderBox.cpp
index 469d6b4bf5fb6c49f573c44cb5063e1072f74e1d..427a8fd3ac60e8f43137fb9c2e1695a756b7bd61 100644
--- a/Source/core/rendering/RenderBox.cpp
+++ b/Source/core/rendering/RenderBox.cpp
@@ -576,10 +576,10 @@ FloatQuad RenderBox::absoluteContentQuad() const
return localToAbsoluteQuad(FloatRect(rect));
}
-void RenderBox::addFocusRingRects(Vector<IntRect>& rects, const LayoutPoint& additionalOffset, const RenderLayerModelObject*) const
+void RenderBox::addFocusRingRects(Vector<LayoutRect>& rects, const LayoutPoint& additionalOffset, const RenderLayerModelObject*) const
{
if (!size().isEmpty())
- rects.append(pixelSnappedIntRect(additionalOffset, size()));
+ rects.append(LayoutRect(additionalOffset, size()));
}
bool RenderBox::canResize() const
@@ -4204,15 +4204,15 @@ LayoutBoxExtent RenderBox::computeVisualEffectOverflowExtent() const
if (outlineStyle->hasOutline()) {
if (outlineStyle->outlineStyleIsAuto()) {
// The result focus ring rects are in coordinates of this object's border box.
- Vector<IntRect> focusRingRects;
+ Vector<LayoutRect> focusRingRects;
addFocusRingRects(focusRingRects, LayoutPoint(), this);
- IntRect rect = unionRect(focusRingRects);
+ LayoutRect rect = unionRect(focusRingRects);
int outlineSize = GraphicsContext::focusRingOutsetExtent(outlineStyle->outlineOffset(), outlineStyle->outlineWidth());
- top = std::max<LayoutUnit>(top, -rect.y() + outlineSize);
- right = std::max<LayoutUnit>(right, rect.maxX() - width() + outlineSize);
- bottom = std::max<LayoutUnit>(bottom, rect.maxY() - height() + outlineSize);
- left = std::max<LayoutUnit>(left, -rect.x() + outlineSize);
+ top = std::max(top, -rect.y() + outlineSize);
+ right = std::max(right, rect.maxX() - width() + outlineSize);
+ bottom = std::max(bottom, rect.maxY() - height() + outlineSize);
+ left = std::max(left, -rect.x() + outlineSize);
} else {
LayoutUnit outlineSize = outlineStyle->outlineSize();
top = std::max(top, outlineSize);

Powered by Google App Engine
This is Rietveld 408576698