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

Unified Diff: chrome/browser/chromeos/ui/accessibility_focus_ring.cc

Issue 602813003: Animate the accessibility focus ring and fix some minor visual issues. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@focus_ring_in_chromevox
Patch Set: Fix unit tests Created 6 years, 3 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: chrome/browser/chromeos/ui/accessibility_focus_ring.cc
diff --git a/chrome/browser/chromeos/ui/accessibility_focus_ring.cc b/chrome/browser/chromeos/ui/accessibility_focus_ring.cc
index 676170500078c7192106d37a6b0c3e4cdf7f77bc..ea15902e16112678aa13e1dde897318181718bfe 100644
--- a/chrome/browser/chromeos/ui/accessibility_focus_ring.cc
+++ b/chrome/browser/chromeos/ui/accessibility_focus_ring.cc
@@ -4,21 +4,41 @@
#include "chrome/browser/chromeos/ui/accessibility_focus_ring.h"
+#include "base/logging.h"
+
namespace chromeos {
// static
AccessibilityFocusRing AccessibilityFocusRing::CreateWithRect(
const gfx::Rect& bounds, int margin) {
+ // Compute the height of the top and bottom cap.
+ int cap_height = std::min(bounds.height() / 2, margin * 2);
+
gfx::Rect top(bounds.x(), bounds.y(),
- bounds.width(), bounds.height() / 4);
+ bounds.width(), cap_height);
+ gfx::Rect bottom(bounds.x(), bounds.bottom() - cap_height,
+ bounds.width(), cap_height);
gfx::Rect body(bounds.x(), top.bottom(),
- bounds.width(), bounds.height() / 2);
- gfx::Rect bottom(bounds.x(), body.bottom(),
- bounds.width(), bounds.bottom() - body.bottom());
+ bounds.width(), bottom.y() - top.bottom());
+
return CreateWithParagraphShape(top, body, bottom, margin);
}
// static
+AccessibilityFocusRing AccessibilityFocusRing::Interpolate(
+ const AccessibilityFocusRing& r1,
+ const AccessibilityFocusRing& r2,
+ double fraction) {
+ AccessibilityFocusRing dst;
+ for (int i = 0; i < 36; ++i) {
+ dst.points[i] = gfx::Point(
+ r1.points[i].x() * (1 - fraction) + r2.points[i].x() * fraction,
+ r1.points[i].y() * (1 - fraction) + r2.points[i].y() * fraction);
+ }
+ return dst;
+}
+
+// static
AccessibilityFocusRing AccessibilityFocusRing::CreateWithParagraphShape(
const gfx::Rect& orig_top_line,
const gfx::Rect& orig_body,
@@ -28,6 +48,9 @@ AccessibilityFocusRing AccessibilityFocusRing::CreateWithParagraphShape(
gfx::Rect middle = orig_body;
gfx::Rect bottom = orig_bottom_line;
+ int min_height = std::min(top.height(), bottom.height());
+ margin = std::min(margin, min_height / 2);
+
if (top.x() <= middle.x() + 2 * margin) {
top.set_width(top.width() + top.x() - middle.x());
top.set_x(middle.x());
@@ -108,7 +131,7 @@ AccessibilityFocusRing AccessibilityFocusRing::CreateWithParagraphShape(
gfx::Rect AccessibilityFocusRing::GetBounds() const {
gfx::Point top_left = points[0];
gfx::Point bottom_right = points[0];
- for (size_t i = 1; i < 36; i++) {
+ for (size_t i = 1; i < 36; ++i) {
top_left.SetToMin(points[i]);
bottom_right.SetToMax(points[i]);
}

Powered by Google App Engine
This is Rietveld 408576698