diff options
author | mazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-23 04:31:27 +0000 |
---|---|---|
committer | mazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-23 04:31:27 +0000 |
commit | 8ccddf61312b0f0c514be035cd7754b3474c6aef (patch) | |
tree | 47a1ae32621e4bc53bfdbde8c2dd1abcfa6e4093 /ash | |
parent | 98c6b0021366e91f543726ad803fae4e179224ab (diff) | |
download | chromium_src-8ccddf61312b0f0c514be035cd7754b3474c6aef.zip chromium_src-8ccddf61312b0f0c514be035cd7754b3474c6aef.tar.gz chromium_src-8ccddf61312b0f0c514be035cd7754b3474c6aef.tar.bz2 |
Use WorkspaceWindowResizer in TwoFingerDragHandler instead of DefaultWindowResizer.
This will make a window contained in the work area, which is consistent with
window move by single finger.
BUG=156717
TEST=Check window is not moved beneath the launcher by two finger window move on device.
Review URL: https://chromiumcodereview.appspot.com/11183074
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@163500 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash')
-rw-r--r-- | ash/wm/gestures/two_finger_drag_handler.cc | 10 | ||||
-rw-r--r-- | ash/wm/gestures/two_finger_drag_handler.h | 4 | ||||
-rw-r--r-- | ash/wm/window_resizer.h | 8 | ||||
-rw-r--r-- | ash/wm/workspace/workspace_window_resizer.cc | 17 |
4 files changed, 32 insertions, 7 deletions
diff --git a/ash/wm/gestures/two_finger_drag_handler.cc b/ash/wm/gestures/two_finger_drag_handler.cc index 9cf5056..b60dee7 100644 --- a/ash/wm/gestures/two_finger_drag_handler.cc +++ b/ash/wm/gestures/two_finger_drag_handler.cc @@ -4,7 +4,7 @@ #include "ash/wm/gestures/two_finger_drag_handler.h" -#include "ash/wm/default_window_resizer.h" +#include "ash/wm/window_resizer.h" #include "ash/wm/window_util.h" #include "ash/wm/workspace/snap_sizer.h" #include "ui/aura/client/window_types.h" @@ -31,8 +31,8 @@ bool TwoFingerDragHandler::ProcessGestureEvent(aura::Window* target, if (wm::IsWindowNormal(target) && target->type() == aura::client::WINDOW_TYPE_NORMAL) { target->AddObserver(this); - window_resizer_.reset(DefaultWindowResizer::Create(target, - event.details().bounding_box().CenterPoint(), HTCAPTION)); + window_resizer_ = CreateWindowResizer(target, + event.details().bounding_box().CenterPoint(), HTCAPTION); return true; } @@ -56,7 +56,7 @@ bool TwoFingerDragHandler::ProcessGestureEvent(aura::Window* target, case ui::ET_GESTURE_MULTIFINGER_SWIPE: { // For a swipe, the window either maximizes, minimizes, or snaps. In this // case, cancel the drag, and do the appropriate action. - aura::Window* target = window_resizer_->target_window(); + aura::Window* target = window_resizer_->GetTarget(); Reset(); if (event.details().swipe_up()) { @@ -105,7 +105,7 @@ bool TwoFingerDragHandler::ProcessGestureEvent(aura::Window* target, } void TwoFingerDragHandler::Reset() { - window_resizer_->target_window()->RemoveObserver(this); + window_resizer_->GetTarget()->RemoveObserver(this); window_resizer_.reset(); } diff --git a/ash/wm/gestures/two_finger_drag_handler.h b/ash/wm/gestures/two_finger_drag_handler.h index f2537cf..3e91a16 100644 --- a/ash/wm/gestures/two_finger_drag_handler.h +++ b/ash/wm/gestures/two_finger_drag_handler.h @@ -19,7 +19,7 @@ class GestureEvent; namespace ash { -class DefaultWindowResizer; +class WindowResizer; namespace internal { @@ -42,7 +42,7 @@ class TwoFingerDragHandler : public aura::WindowObserver { bool visible) OVERRIDE; virtual void OnWindowDestroying(aura::Window* window) OVERRIDE; - scoped_ptr<DefaultWindowResizer> window_resizer_; + scoped_ptr<WindowResizer> window_resizer_; DISALLOW_COPY_AND_ASSIGN(TwoFingerDragHandler); }; diff --git a/ash/wm/window_resizer.h b/ash/wm/window_resizer.h index 67dea81..f393af6 100644 --- a/ash/wm/window_resizer.h +++ b/ash/wm/window_resizer.h @@ -7,6 +7,7 @@ #include "ash/ash_export.h" #include "base/basictypes.h" +#include "base/memory/scoped_ptr.h" #include "ui/gfx/rect.h" namespace aura { @@ -121,6 +122,13 @@ class ASH_EXPORT WindowResizer { int* delta_y); }; +// Creates a WindowResizer for |window|. This can return a scoped_ptr +// initialized with NULL if |window| should not be resized nor dragged. +scoped_ptr<WindowResizer> CreateWindowResizer( + aura::Window* window, + const gfx::Point& point_in_parent, + int window_component); + } // namespace aura #endif // ASH_WM_WINDOW_RESIZER_H_ diff --git a/ash/wm/workspace/workspace_window_resizer.cc b/ash/wm/workspace/workspace_window_resizer.cc index 26309d1..e16ba23 100644 --- a/ash/wm/workspace/workspace_window_resizer.cc +++ b/ash/wm/workspace/workspace_window_resizer.cc @@ -29,6 +29,23 @@ #include "ui/gfx/transform.h" 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))) { + return scoped_ptr<WindowResizer>(); + } + return make_scoped_ptr<WindowResizer>( + internal::WorkspaceWindowResizer::Create(window, + point_in_parent, + window_component, + std::vector<aura::Window*>())); +} + namespace internal { namespace { |