Index: ui/views/widget/desktop_aura/desktop_native_widget_aura.cc |
diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc |
index c82ced73bb74b4175c43a6b5da51e8dc80031b95..d959ac0aa9b84ec3b59533c32a54d29436ce514e 100644 |
--- a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc |
+++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc |
@@ -56,6 +56,7 @@ |
#include "ui/wm/core/shadow_controller.h" |
#include "ui/wm/core/shadow_types.h" |
#include "ui/wm/core/visibility_controller.h" |
+#include "ui/wm/core/window_activation_pre_target_handler.h" |
#include "ui/wm/core/window_animations.h" |
#include "ui/wm/core/window_modality_controller.h" |
#include "ui/wm/public/activation_client.h" |
@@ -320,7 +321,9 @@ void DesktopNativeWidgetAura::OnHostClosed() { |
// have to worry about the possibility of FocusController attempting to use |
// |content_window_| after it's been destroyed but before all child windows |
// have been destroyed. |
- host_->window()->RemovePreTargetHandler(focus_client_.get()); |
+ host_->window()->RemovePreTargetHandler( |
+ window_activation_pretarget_handler_.get()); |
+ window_activation_pretarget_handler_.reset(); |
aura::client::SetFocusClient(host_->window(), NULL); |
aura::client::SetActivationClient(host_->window(), NULL); |
focus_client_.reset(); |
@@ -478,7 +481,10 @@ void DesktopNativeWidgetAura::InitNativeWidget( |
focus_client_.reset(focus_controller); |
aura::client::SetFocusClient(host_->window(), focus_controller); |
aura::client::SetActivationClient(host_->window(), focus_controller); |
- host_->window()->AddPreTargetHandler(focus_controller); |
+ window_activation_pretarget_handler_.reset( |
sky
2015/05/27 15:37:52
I don't like separating out activation from the fo
|
+ new ::wm::WindowActivationPreTargetHandler(focus_client_.get())); |
+ host_->window()->AddPreTargetHandler( |
+ window_activation_pretarget_handler_.get()); |
dispatcher_client_.reset(new DesktopDispatcherClient); |
aura::client::SetDispatcherClient(host_->window(), |