summaryrefslogtreecommitdiffstats
path: root/ash
diff options
context:
space:
mode:
authormazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-23 04:31:27 +0000
committermazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-23 04:31:27 +0000
commit8ccddf61312b0f0c514be035cd7754b3474c6aef (patch)
tree47a1ae32621e4bc53bfdbde8c2dd1abcfa6e4093 /ash
parent98c6b0021366e91f543726ad803fae4e179224ab (diff)
downloadchromium_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.cc10
-rw-r--r--ash/wm/gestures/two_finger_drag_handler.h4
-rw-r--r--ash/wm/window_resizer.h8
-rw-r--r--ash/wm/workspace/workspace_window_resizer.cc17
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 {