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