Index: ash/mus/shadow_controller.cc |
diff --git a/ash/mus/shadow_controller.cc b/ash/mus/shadow_controller.cc |
index ce4492c552005996d9f637db77fae90dde2f1bc6..605d0bb1a54b40bac21883775c87d40724ac0a3d 100644 |
--- a/ash/mus/shadow_controller.cc |
+++ b/ash/mus/shadow_controller.cc |
@@ -4,61 +4,84 @@ |
#include "ash/mus/shadow_controller.h" |
-#include "ash/mus/property_util.h" |
#include "ash/mus/shadow.h" |
-#include "services/ui/public/cpp/window.h" |
-#include "services/ui/public/cpp/window_tree_client.h" |
+#include "ui/aura/client/focus_client.h" |
+#include "ui/aura/env.h" |
+#include "ui/aura/window.h" |
namespace ash { |
namespace mus { |
namespace { |
// Returns the first ancestor of |from| (including |from|) that has a shadow. |
-ui::Window* FindAncestorWithShadow(ui::Window* from) { |
- ui::Window* result = from; |
- while (result && !GetShadow(result)) |
+aura::Window* FindAncestorWithShadow(aura::Window* from) { |
+ aura::Window* result = from; |
+ while (result && !Shadow::Get(result)) |
result = result->parent(); |
// Small shadows never change. |
- return result && GetShadow(result)->style() != Shadow::STYLE_SMALL ? result |
- : nullptr; |
+ return result && Shadow::Get(result)->style() != Shadow::STYLE_SMALL |
+ ? result |
+ : nullptr; |
} |
} // namespace |
-ShadowController::ShadowController(ui::WindowTreeClient* window_tree) |
- : window_tree_(window_tree), active_window_(nullptr) { |
- window_tree_->AddObserver(this); |
- SetActiveWindow(FindAncestorWithShadow(window_tree_->GetFocusedWindow())); |
+ShadowController::ShadowController() { |
+ aura::Env::GetInstance()->AddObserver(this); |
+ SetFocusClient(aura::Env::GetInstance()->active_focus_client()); |
} |
ShadowController::~ShadowController() { |
- window_tree_->RemoveObserver(this); |
+ aura::Env::GetInstance()->RemoveObserver(this); |
if (active_window_) |
active_window_->RemoveObserver(this); |
+ if (active_focus_client_) |
+ active_focus_client_->RemoveObserver(this); |
} |
-void ShadowController::SetActiveWindow(ui::Window* window) { |
+void ShadowController::SetActiveWindow(aura::Window* window) { |
+ window = FindAncestorWithShadow(window); |
if (window == active_window_) |
return; |
if (active_window_) { |
- if (GetShadow(active_window_)) |
- GetShadow(active_window_)->SetStyle(Shadow::STYLE_INACTIVE); |
+ if (Shadow::Get(active_window_)) |
+ Shadow::Get(active_window_)->SetStyle(Shadow::STYLE_INACTIVE); |
active_window_->RemoveObserver(this); |
} |
active_window_ = window; |
if (active_window_) { |
- GetShadow(active_window_)->SetStyle(Shadow::STYLE_ACTIVE); |
+ Shadow::Get(active_window_)->SetStyle(Shadow::STYLE_ACTIVE); |
active_window_->AddObserver(this); |
} |
} |
-void ShadowController::OnWindowTreeFocusChanged(ui::Window* gained_focus, |
- ui::Window* lost_focus) { |
- SetActiveWindow(FindAncestorWithShadow(gained_focus)); |
+void ShadowController::SetFocusClient(aura::client::FocusClient* focus_client) { |
+ if (active_focus_client_) |
+ active_focus_client_->RemoveObserver(this); |
+ active_focus_client_ = focus_client; |
+ if (active_focus_client_) { |
+ active_focus_client_->AddObserver(this); |
+ SetActiveWindow(active_focus_client_->GetFocusedWindow()); |
+ } else { |
+ SetActiveWindow(nullptr); |
+ } |
+} |
+ |
+void ShadowController::OnWindowInitialized(aura::Window* window) {} |
+ |
+void ShadowController::OnActiveFocusClientChanged( |
+ aura::client::FocusClient* focus_client, |
+ aura::Window* window) { |
+ SetFocusClient(focus_client); |
+} |
+ |
+void ShadowController::OnWindowFocused(aura::Window* gained_focus, |
+ aura::Window* lost_focus) { |
+ SetActiveWindow(gained_focus); |
} |
-void ShadowController::OnWindowDestroying(ui::Window* window) { |
+void ShadowController::OnWindowDestroying(aura::Window* window) { |
DCHECK_EQ(window, active_window_); |
SetActiveWindow(nullptr); |
} |