| Index: ash/wm/workspace/workspace_window_resizer.cc
|
| diff --git a/ash/wm/workspace/workspace_window_resizer.cc b/ash/wm/workspace/workspace_window_resizer.cc
|
| index 25430933827c63762fb0e9b7dcc1cc1d348f5370..88e9f28aec229c0b65efbfb1aad788d7e6929dc1 100644
|
| --- a/ash/wm/workspace/workspace_window_resizer.cc
|
| +++ b/ash/wm/workspace/workspace_window_resizer.cc
|
| @@ -36,9 +36,11 @@
|
|
|
| namespace ash {
|
|
|
| -scoped_ptr<WindowResizer> CreateWindowResizer(aura::Window* window,
|
| - const gfx::Point& point_in_parent,
|
| - int window_component) {
|
| +scoped_ptr<WindowResizer> CreateWindowResizer(
|
| + aura::Window* window,
|
| + const gfx::Point& point_in_parent,
|
| + int window_component,
|
| + aura::client::WindowMoveSource source) {
|
| DCHECK(window);
|
| // No need to return a resizer when the window cannot get resized.
|
| if (!wm::CanResizeWindow(window) && window_component != HTCAPTION)
|
| @@ -56,18 +58,19 @@ scoped_ptr<WindowResizer> CreateWindowResizer(aura::Window* window,
|
| window,
|
| point_in_parent,
|
| window_component,
|
| + source,
|
| std::vector<aura::Window*>());
|
| } else if (wm::IsWindowNormal(window)) {
|
| window_resizer = DefaultWindowResizer::Create(
|
| - window, point_in_parent, window_component);
|
| + window, point_in_parent, window_component, source);
|
| }
|
| if (window_resizer) {
|
| window_resizer = internal::DragWindowResizer::Create(
|
| - window_resizer, window, point_in_parent, window_component);
|
| + window_resizer, window, point_in_parent, window_component, source);
|
| }
|
| if (window_resizer && window->type() == aura::client::WINDOW_TYPE_PANEL) {
|
| window_resizer = PanelWindowResizer::Create(
|
| - window_resizer, window, point_in_parent, window_component);
|
| + window_resizer, window, point_in_parent, window_component, source);
|
| }
|
| return make_scoped_ptr<WindowResizer>(window_resizer);
|
| }
|
| @@ -80,6 +83,10 @@ namespace {
|
| // to move or resize beyond that edge.
|
| const int kStickyDistancePixels = 64;
|
|
|
| +// Snapping distance used instead of WorkspaceWindowResizer::kScreenEdgeInset
|
| +// when resizing a window using touchscreen.
|
| +const int kScreenEdgeInsetForTouchResize = 32;
|
| +
|
| // Returns true if the window should stick to the edge.
|
| bool ShouldStickToEdge(int distance_from_edge, int sticky_size) {
|
| if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| @@ -310,8 +317,9 @@ WorkspaceWindowResizer* WorkspaceWindowResizer::Create(
|
| aura::Window* window,
|
| const gfx::Point& location_in_parent,
|
| int window_component,
|
| + aura::client::WindowMoveSource source,
|
| const std::vector<aura::Window*>& attached_windows) {
|
| - Details details(window, location_in_parent, window_component);
|
| + Details details(window, location_in_parent, window_component, source);
|
| return details.is_resizable ?
|
| new WorkspaceWindowResizer(details, attached_windows) : NULL;
|
| }
|
| @@ -326,6 +334,9 @@ void WorkspaceWindowResizer::Drag(const gfx::Point& location_in_parent,
|
| } else if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| switches::kAshEnableStickyEdges)) {
|
| sticky_size = kStickyDistancePixels;
|
| + } else if ((details_.bounds_change & kBoundsChange_Resizes) &&
|
| + details_.source == aura::client::WINDOW_MOVE_SOURCE_TOUCH) {
|
| + sticky_size = kScreenEdgeInsetForTouchResize;
|
| } else {
|
| sticky_size = kScreenEdgeInset;
|
| }
|
|
|