Index: ash/shell.cc |
diff --git a/ash/shell.cc b/ash/shell.cc |
index 4cd9fd9932f831751bd52af562bff0d5011227cf..55a8de2f1312eb05407b85d7fe9009f1127f6f29 100644 |
--- a/ash/shell.cc |
+++ b/ash/shell.cc |
@@ -71,6 +71,7 @@ |
#include "ash/wm/system_gesture_event_filter.h" |
#include "ash/wm/system_modal_container_event_filter.h" |
#include "ash/wm/system_modal_container_layout_manager.h" |
+#include "ash/wm/toplevel_window_event_handler.h" |
#include "ash/wm/user_activity_detector.h" |
#include "ash/wm/video_detector.h" |
#include "ash/wm/window_animations.h" |
@@ -606,12 +607,14 @@ Shell::~Shell() { |
RemovePreTargetHandler(user_activity_detector_.get()); |
RemovePreTargetHandler(overlay_filter_.get()); |
RemovePreTargetHandler(input_method_filter_.get()); |
- if (mouse_cursor_filter_) |
- RemovePreTargetHandler(mouse_cursor_filter_.get()); |
+ RemovePreTargetHandler(accelerator_filter_.get()); |
+ RemovePreTargetHandler(event_transformation_handler_.get()); |
+ RemovePreTargetHandler(toplevel_window_event_handler_.get()); |
+ RemovePostTargetHandler(toplevel_window_event_handler_.get()); |
RemovePreTargetHandler(system_gesture_filter_.get()); |
RemovePreTargetHandler(keyboard_metrics_filter_.get()); |
- RemovePreTargetHandler(event_transformation_handler_.get()); |
- RemovePreTargetHandler(accelerator_filter_.get()); |
+ if (mouse_cursor_filter_) |
+ RemovePreTargetHandler(mouse_cursor_filter_.get()); |
// TooltipController is deleted with the Shell so removing its references. |
RemovePreTargetHandler(tooltip_controller_.get()); |
@@ -673,6 +676,7 @@ Shell::~Shell() { |
tooltip_controller_.reset(); |
event_client_.reset(); |
nested_dispatcher_controller_.reset(); |
+ toplevel_window_event_handler_.reset(); |
varkha
2013/12/13 04:05:14
Do we need to reset other handlers and filters tha
pkotwicz
2013/12/13 20:28:42
We need to reset |toplevel_window_event_handler_|
|
user_action_client_.reset(); |
visibility_controller_.reset(); |
// |shelf_item_delegate_manager_| observes |shelf_model_|. It must be |
@@ -823,6 +827,10 @@ void Shell::Init() { |
event_transformation_handler_.reset(new internal::EventTransformationHandler); |
AddPreTargetHandler(event_transformation_handler_.get()); |
+ toplevel_window_event_handler_.reset(new ToplevelWindowEventHandler); |
+ AddPreTargetHandler(toplevel_window_event_handler_.get()); |
+ AddPostTargetHandler(toplevel_window_event_handler_.get()); |
+ |
system_gesture_filter_.reset(new internal::SystemGestureEventFilter); |
AddPreTargetHandler(system_gesture_filter_.get()); |
@@ -981,6 +989,8 @@ void Shell::InitRootWindow(aura::Window* root_window) { |
aura::client::SetCursorClient(root_window, &cursor_manager_); |
aura::client::SetTooltipClient(root_window, tooltip_controller_.get()); |
aura::client::SetEventClient(root_window, event_client_.get()); |
+ aura::client::SetWindowMoveClient(root_window, |
+ toplevel_window_event_handler_.get()); |
if (nested_dispatcher_controller_) { |
aura::client::SetDispatcherClient(root_window, |