diff options
author | mazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-26 05:14:35 +0000 |
---|---|---|
committer | mazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-26 05:14:35 +0000 |
commit | 566876ec04cfe7fd20963c7dd6e073891a27e572 (patch) | |
tree | a8716cf7b16ca582026208253888bc4d59f653a7 /ash | |
parent | 1858410f3beb10255da673b90f7dabbd97fbc708 (diff) | |
download | chromium_src-566876ec04cfe7fd20963c7dd6e073891a27e572.zip chromium_src-566876ec04cfe7fd20963c7dd6e073891a27e572.tar.gz chromium_src-566876ec04cfe7fd20963c7dd6e073891a27e572.tar.bz2 |
Centralize the creation of WindowResizer.
This enables WindowResizer to be created based on the target window.
BUG=156519
Review URL: https://chromiumcodereview.appspot.com/11270052
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164264 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash')
-rw-r--r-- | ash/wm/toplevel_window_event_handler.cc | 15 | ||||
-rw-r--r-- | ash/wm/toplevel_window_event_handler.h | 6 | ||||
-rw-r--r-- | ash/wm/workspace/workspace_event_handler.cc | 15 | ||||
-rw-r--r-- | ash/wm/workspace/workspace_event_handler.h | 7 | ||||
-rw-r--r-- | ash/wm/workspace/workspace_window_resizer.cc | 34 |
5 files changed, 24 insertions, 53 deletions
diff --git a/ash/wm/toplevel_window_event_handler.cc b/ash/wm/toplevel_window_event_handler.cc index 81dfdb4..fbbd082 100644 --- a/ash/wm/toplevel_window_event_handler.cc +++ b/ash/wm/toplevel_window_event_handler.cc @@ -5,7 +5,6 @@ #include "ash/wm/toplevel_window_event_handler.h" #include "ash/shell.h" -#include "ash/wm/default_window_resizer.h" #include "ash/wm/property_util.h" #include "ash/wm/resize_shadow_controller.h" #include "ash/wm/window_resizer.h" @@ -287,25 +286,13 @@ void ToplevelWindowEventHandler::OnDisplayConfigurationChanging() { } } -// static -WindowResizer* ToplevelWindowEventHandler::CreateWindowResizer( - aura::Window* window, - const gfx::Point& point_in_parent, - int window_component) { - if (!wm::IsWindowNormal(window)) - return NULL; // Don't allow resizing/dragging maximized/fullscreen windows. - return DefaultWindowResizer::Create( - window, point_in_parent, window_component); -} - - void ToplevelWindowEventHandler::CreateScopedWindowResizer( aura::Window* window, const gfx::Point& point_in_parent, int window_component) { window_resizer_.reset(); WindowResizer* resizer = - CreateWindowResizer(window, point_in_parent, window_component); + CreateWindowResizer(window, point_in_parent, window_component).release(); if (resizer) window_resizer_.reset(new ScopedWindowResizer(this, resizer)); } diff --git a/ash/wm/toplevel_window_event_handler.h b/ash/wm/toplevel_window_event_handler.h index 295ba8c..4020fc6 100644 --- a/ash/wm/toplevel_window_event_handler.h +++ b/ash/wm/toplevel_window_event_handler.h @@ -53,12 +53,6 @@ class ASH_EXPORT ToplevelWindowEventHandler // Overridden form ash::DisplayController::Observer: virtual void OnDisplayConfigurationChanging() OVERRIDE; - protected: - // Creates a new WindowResizer. - virtual WindowResizer* CreateWindowResizer(aura::Window* window, - const gfx::Point& point_in_parent, - int window_component); - private: class ScopedWindowResizer; diff --git a/ash/wm/workspace/workspace_event_handler.cc b/ash/wm/workspace/workspace_event_handler.cc index b947f1f..dc26493 100644 --- a/ash/wm/workspace/workspace_event_handler.cc +++ b/ash/wm/workspace/workspace_event_handler.cc @@ -119,21 +119,6 @@ ui::EventResult WorkspaceEventHandler::OnGestureEvent(ui::GestureEvent* event) { return ToplevelWindowEventHandler::OnGestureEvent(event); } -WindowResizer* WorkspaceEventHandler::CreateWindowResizer( - aura::Window* window, - const gfx::Point& point_in_parent, - int window_component) { - // Allow dragging maximized windows if it's not tracked by workspace. This is - // set by tab dragging code. - if (!wm::IsWindowNormal(window) && - (window_component != HTCAPTION || GetTrackedByWorkspace(window))) { - return NULL; - } - return WorkspaceWindowResizer::Create( - window, point_in_parent, window_component, - std::vector<aura::Window*>()); -} - void WorkspaceEventHandler::HandleVerticalResizeDoubleClick( aura::Window* target, ui::MouseEvent* event) { diff --git a/ash/wm/workspace/workspace_event_handler.h b/ash/wm/workspace/workspace_event_handler.h index 8b08958..62da0bd 100644 --- a/ash/wm/workspace/workspace_event_handler.h +++ b/ash/wm/workspace/workspace_event_handler.h @@ -26,13 +26,6 @@ class WorkspaceEventHandler : public ToplevelWindowEventHandler { virtual ui::EventResult OnMouseEvent(ui::MouseEvent* event) OVERRIDE; virtual ui::EventResult OnGestureEvent(ui::GestureEvent* event) OVERRIDE; - protected: - // Overridden from ToplevelWindowEventHandler: - virtual WindowResizer* CreateWindowResizer( - aura::Window* window, - const gfx::Point& point_in_parent, - int window_component) OVERRIDE; - private: friend class WorkspaceEventHandlerTestHelper; diff --git a/ash/wm/workspace/workspace_window_resizer.cc b/ash/wm/workspace/workspace_window_resizer.cc index d3cc9b7..44a5cb2 100644 --- a/ash/wm/workspace/workspace_window_resizer.cc +++ b/ash/wm/workspace/workspace_window_resizer.cc @@ -13,8 +13,10 @@ #include "ash/display/mouse_cursor_event_filter.h" #include "ash/screen_ash.h" #include "ash/shell.h" +#include "ash/shell_window_ids.h" #include "ash/wm/coordinate_conversion.h" #include "ash/wm/cursor_manager.h" +#include "ash/wm/default_window_resizer.h" #include "ash/wm/property_util.h" #include "ash/wm/window_util.h" #include "ash/wm/workspace/phantom_window_controller.h" @@ -31,19 +33,29 @@ namespace ash { scoped_ptr<WindowResizer> CreateWindowResizer(aura::Window* window, - const gfx::Point& point_in_parent, - int window_component) { - // Allow dragging maximized windows if it's not tracked by workspace. This is - // set by tab dragging code. - if (!wm::IsWindowNormal(window) && - (window_component != HTCAPTION || GetTrackedByWorkspace(window))) { + const gfx::Point& point_in_parent, + int window_component) { + DCHECK(window); + if (window->parent() && + window->parent()->id() == internal::kShellWindowId_WorkspaceContainer) { + // Allow dragging maximized windows if it's not tracked by workspace. This + // is set by tab dragging code. + if (!wm::IsWindowNormal(window) && + (window_component != HTCAPTION || GetTrackedByWorkspace(window))) + return scoped_ptr<WindowResizer>(); + return make_scoped_ptr<WindowResizer>( + internal::WorkspaceWindowResizer::Create(window, + point_in_parent, + window_component, + std::vector<aura::Window*>())); + } else if (wm::IsWindowNormal(window)) { + return make_scoped_ptr<WindowResizer>(DefaultWindowResizer::Create( + window, + point_in_parent, + window_component)); + } else { return scoped_ptr<WindowResizer>(); } - return make_scoped_ptr<WindowResizer>( - internal::WorkspaceWindowResizer::Create(window, - point_in_parent, - window_component, - std::vector<aura::Window*>())); } namespace internal { |