Index: mojo/services/window_manager/window_manager_app.cc |
diff --git a/mojo/services/window_manager/window_manager_app.cc b/mojo/services/window_manager/window_manager_app.cc |
index b6fe7efa3cb5ba5ed04d81e6637e8b413dfef896..a22acba0b1c8880beefbf6fb2e2178088cf8f17f 100644 |
--- a/mojo/services/window_manager/window_manager_app.cc |
+++ b/mojo/services/window_manager/window_manager_app.cc |
@@ -18,7 +18,6 @@ |
#include "ui/base/hit_test.h" |
#include "ui/wm/core/capture_controller.h" |
#include "ui/wm/core/focus_controller.h" |
-#include "ui/wm/core/focus_rules.h" |
#include "ui/wm/public/activation_client.h" |
DECLARE_WINDOW_PROPERTY_TYPE(mojo::View*); |
@@ -72,42 +71,6 @@ Id GetIdForWindow(aura::Window* window) { |
return window ? WindowManagerApp::GetViewForWindow(window)->id() : 0; |
} |
-class WMFocusRules : public wm::FocusRules { |
- public: |
- WMFocusRules() {} |
- virtual ~WMFocusRules() {} |
- |
- private: |
- // Overridden from wm::FocusRules: |
- virtual bool IsToplevelWindow(aura::Window* window) const MOJO_OVERRIDE { |
- return true; |
- } |
- virtual bool CanActivateWindow(aura::Window* window) const MOJO_OVERRIDE { |
- return true; |
- } |
- virtual bool CanFocusWindow(aura::Window* window) const MOJO_OVERRIDE { |
- return true; |
- } |
- virtual aura::Window* GetToplevelWindow( |
- aura::Window* window) const MOJO_OVERRIDE { |
- return window; |
- } |
- virtual aura::Window* GetActivatableWindow( |
- aura::Window* window) const MOJO_OVERRIDE { |
- return window; |
- } |
- virtual aura::Window* GetFocusableWindow( |
- aura::Window* window) const MOJO_OVERRIDE { |
- return window; |
- } |
- virtual aura::Window* GetNextActivatableWindow( |
- aura::Window* ignore) const MOJO_OVERRIDE { |
- return NULL; |
- } |
- |
- DISALLOW_COPY_AND_ASSIGN(WMFocusRules); |
-}; |
- |
} // namespace |
//////////////////////////////////////////////////////////////////////////////// |
@@ -131,6 +94,11 @@ View* WindowManagerApp::GetViewForWindow(aura::Window* window) { |
return window->GetProperty(kViewKey); |
} |
+aura::Window* WindowManagerApp::GetWindowForViewId(Id view) { |
+ ViewIdToWindowMap::const_iterator it = view_id_to_window_map_.find(view); |
+ return it != view_id_to_window_map_.end() ? it->second : NULL; |
+} |
+ |
void WindowManagerApp::AddConnection(WindowManagerServiceImpl* connection) { |
DCHECK(connections_.find(connection) == connections_.end()); |
connections_.insert(connection); |
@@ -163,6 +131,18 @@ bool WindowManagerApp::IsReady() const { |
return view_manager_ && root_; |
} |
+void WindowManagerApp::InitFocus(wm::FocusRules* rules) { |
+ wm::FocusController* focus_controller = new wm::FocusController(rules); |
+ activation_client_ = focus_controller; |
+ focus_client_.reset(focus_controller); |
+ aura::client::SetFocusClient(window_tree_host_->window(), focus_controller); |
+ aura::client::SetActivationClient(window_tree_host_->window(), |
+ focus_controller); |
+ |
+ focus_client_->AddObserver(this); |
+ activation_client_->AddObserver(this); |
+} |
+ |
//////////////////////////////////////////////////////////////////////////////// |
// WindowManagerApp, ApplicationDelegate implementation: |
@@ -199,14 +179,6 @@ void WindowManagerApp::OnEmbed(ViewManager* view_manager, |
capture_client_.reset( |
new wm::ScopedCaptureClient(window_tree_host_->window())); |
- wm::FocusController* focus_controller = |
- new wm::FocusController(new WMFocusRules); |
- activation_client_ = focus_controller; |
- focus_client_.reset(focus_controller); |
- aura::client::SetFocusClient(window_tree_host_->window(), focus_controller); |
- |
- focus_client_->AddObserver(this); |
- activation_client_->AddObserver(this); |
if (wrapped_view_manager_delegate_) { |
wrapped_view_manager_delegate_->OnEmbed( |
@@ -327,16 +299,15 @@ void WindowManagerApp::OnWindowActivated(aura::Window* gained_active, |
(*it)->NotifyWindowActivated(GetIdForWindow(gained_active), |
GetIdForWindow(lost_active)); |
} |
+ if (gained_active) { |
+ View* view = GetViewForWindow(gained_active); |
+ view->MoveToFront(); |
+ } |
} |
//////////////////////////////////////////////////////////////////////////////// |
// WindowManagerApp, private: |
-aura::Window* WindowManagerApp::GetWindowForViewId(Id view) const { |
- ViewIdToWindowMap::const_iterator it = view_id_to_window_map_.find(view); |
- return it != view_id_to_window_map_.end() ? it->second : NULL; |
-} |
- |
void WindowManagerApp::RegisterSubtree(View* view, aura::Window* parent) { |
view->AddObserver(this); |
DCHECK(view_id_to_window_map_.find(view->id()) == |