summaryrefslogtreecommitdiffstats
path: root/ash
diff options
context:
space:
mode:
authormazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-26 05:14:35 +0000
committermazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-26 05:14:35 +0000
commit566876ec04cfe7fd20963c7dd6e073891a27e572 (patch)
treea8716cf7b16ca582026208253888bc4d59f653a7 /ash
parent1858410f3beb10255da673b90f7dabbd97fbc708 (diff)
downloadchromium_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.cc15
-rw-r--r--ash/wm/toplevel_window_event_handler.h6
-rw-r--r--ash/wm/workspace/workspace_event_handler.cc15
-rw-r--r--ash/wm/workspace/workspace_event_handler.h7
-rw-r--r--ash/wm/workspace/workspace_window_resizer.cc34
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 {