Chromium Code Reviews| 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(), |