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

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

Issue 537893003: Move view logic from FocusRingLayer to FocusRingController. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@focus_ring_0_force_on
Patch Set: Address nits 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
« no previous file with comments | « chrome/browser/chromeos/ui/focus_ring_layer.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/ui/focus_ring_layer.cc
diff --git a/chrome/browser/chromeos/ui/focus_ring_layer.cc b/chrome/browser/chromeos/ui/focus_ring_layer.cc
index ab116b86c1cee0ccf9740a8d8eb6ae3a760247d7..43ba8364bb2d9c459ca49ec743400f474b6b7ae0 100644
--- a/chrome/browser/chromeos/ui/focus_ring_layer.cc
+++ b/chrome/browser/chromeos/ui/focus_ring_layer.cc
@@ -4,16 +4,10 @@
#include "chrome/browser/chromeos/ui/focus_ring_layer.h"
-#include "ash/system/tray/actionable_view.h"
-#include "ash/system/tray/tray_background_view.h"
-#include "ash/system/tray/tray_popup_header_button.h"
#include "base/bind.h"
#include "ui/aura/window.h"
#include "ui/compositor/layer.h"
#include "ui/gfx/canvas.h"
-#include "ui/views/controls/button/label_button.h"
-#include "ui/views/view.h"
-#include "ui/views/widget/widget.h"
namespace chromeos {
@@ -25,18 +19,17 @@ const SkColor kShadowColor = SkColorSetRGB(77, 144, 254);
} // namespace
-FocusRingLayer::FocusRingLayer()
- : window_(NULL),
+FocusRingLayerDelegate::~FocusRingLayerDelegate() {}
+
+FocusRingLayer::FocusRingLayer(FocusRingLayerDelegate* delegate)
+ : delegate_(delegate),
root_window_(NULL) {
}
FocusRingLayer::~FocusRingLayer() {}
-void FocusRingLayer::Update() {
- if (!window_)
- return;
-
- aura::Window* root_window = window_->GetRootWindow();
+void FocusRingLayer::Set(aura::Window* root_window, const gfx::Rect& bounds) {
+ focus_ring_ = bounds;
if (!layer_ || root_window != root_window_) {
root_window_ = root_window;
ui::Layer* root_layer = root_window->layer();
@@ -51,64 +44,18 @@ void FocusRingLayer::Update() {
// since we created this layer.
layer_->parent()->StackAtTop(layer_.get());
- // Translate native window coordinates to root window coordinates.
- gfx::Point origin = focus_ring_.origin();
- aura::Window::ConvertPointToTarget(window_, root_window_, &origin);
- gfx::Rect layer_bounds = focus_ring_;
- layer_bounds.set_origin(origin);
+ // Update the layer bounds.
+ gfx::Rect layer_bounds = bounds;
int inset = -(kShadowRadius + 2);
layer_bounds.Inset(inset, inset, inset, inset);
layer_->SetBounds(layer_bounds);
}
-void FocusRingLayer::SetForView(views::View* view) {
- if (!view) {
- if (layer_ && !focus_ring_.IsEmpty())
- layer_->SchedulePaint(focus_ring_);
- focus_ring_ = gfx::Rect();
- return;
- }
-
- DCHECK(view->GetWidget());
- window_ = view->GetWidget()->GetNativeWindow();
-
- gfx::Rect view_bounds = view->GetContentsBounds();
-
- // Workarounds that attempts to pick a better bounds.
- if (view->GetClassName() == views::LabelButton::kViewClassName) {
- view_bounds = view->GetLocalBounds();
- view_bounds.Inset(2, 2, 2, 2);
- }
-
- // Workarounds for system tray items that have customized focus borders. The
- // insets here must be consistent with the ones used by those classes.
- if (view->GetClassName() == ash::ActionableView::kViewClassName) {
- view_bounds = view->GetLocalBounds();
- view_bounds.Inset(1, 1, 3, 3);
- } else if (view->GetClassName() == ash::TrayBackgroundView::kViewClassName) {
- view_bounds.Inset(1, 1, 3, 3);
- } else if (view->GetClassName() ==
- ash::TrayPopupHeaderButton::kViewClassName) {
- view_bounds = view->GetLocalBounds();
- view_bounds.Inset(2, 1, 2, 2);
- }
-
- focus_ring_ = view->ConvertRectToWidget(view_bounds);
- Update();
-}
-
void FocusRingLayer::OnPaintLayer(gfx::Canvas* canvas) {
- if (focus_ring_.IsEmpty())
+ if (!root_window_ || focus_ring_.IsEmpty())
return;
- // Convert the focus ring from native-window-relative coordinates to
- // layer-relative coordinates.
- gfx::Point origin = focus_ring_.origin();
- aura::Window::ConvertPointToTarget(window_, root_window_, &origin);
- origin -= layer_->bounds().OffsetFromOrigin();
- gfx::Rect bounds = focus_ring_;
- bounds.set_origin(origin);
-
+ gfx::Rect bounds = focus_ring_ - layer_->bounds().OffsetFromOrigin();
SkPaint paint;
paint.setColor(kShadowColor);
paint.setFlags(SkPaint::kAntiAlias_Flag);
@@ -129,7 +76,8 @@ void FocusRingLayer::OnDelegatedFrameDamage(
}
void FocusRingLayer::OnDeviceScaleFactorChanged(float device_scale_factor) {
- Update();
+ if (delegate_)
+ delegate_->OnDeviceScaleFactorChanged();
}
base::Closure FocusRingLayer::PrepareForLayerBoundsChange() {
« no previous file with comments | « chrome/browser/chromeos/ui/focus_ring_layer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698