Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(323)

Side by Side Diff: ash/wm/workspace/workspace_window_resizer.cc

Issue 15008002: Make touch-resizing windows to screen edge possible (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Applied some reviews Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/wm/workspace/workspace_window_resizer.h" 5 #include "ash/wm/workspace/workspace_window_resizer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 } 73 }
74 74
75 namespace internal { 75 namespace internal {
76 76
77 namespace { 77 namespace {
78 78
79 // Distance in pixels that the cursor must move past an edge for a window 79 // Distance in pixels that the cursor must move past an edge for a window
80 // to move or resize beyond that edge. 80 // to move or resize beyond that edge.
81 const int kStickyDistancePixels = 64; 81 const int kStickyDistancePixels = 64;
82 82
83 // Snapping distance used instead of WorkspaceWindowResizer::kScreenEdgeInset
84 // when resizing a window using touchscreen.
85 const int kScreenEdgeInsetForTouchResize = 16;
86
83 // Returns true if the window should stick to the edge. 87 // Returns true if the window should stick to the edge.
84 bool ShouldStickToEdge(int distance_from_edge, int sticky_size) { 88 bool ShouldStickToEdge(int distance_from_edge, int sticky_size) {
85 if (CommandLine::ForCurrentProcess()->HasSwitch( 89 if (CommandLine::ForCurrentProcess()->HasSwitch(
86 switches::kAshEnableStickyEdges)) { 90 switches::kAshEnableStickyEdges)) {
87 return distance_from_edge < 0 && 91 return distance_from_edge < 0 &&
88 distance_from_edge > -sticky_size; 92 distance_from_edge > -sticky_size;
89 } 93 }
90 return distance_from_edge < sticky_size && 94 return distance_from_edge < sticky_size &&
91 distance_from_edge > -sticky_size * 2; 95 distance_from_edge > -sticky_size * 2;
92 } 96 }
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 int event_flags) { 324 int event_flags) {
321 last_mouse_location_ = location_in_parent; 325 last_mouse_location_ = location_in_parent;
322 326
323 int sticky_size; 327 int sticky_size;
324 if (event_flags & ui::EF_CONTROL_DOWN) { 328 if (event_flags & ui::EF_CONTROL_DOWN) {
325 sticky_size = 0; 329 sticky_size = 0;
326 } else if (CommandLine::ForCurrentProcess()->HasSwitch( 330 } else if (CommandLine::ForCurrentProcess()->HasSwitch(
327 switches::kAshEnableStickyEdges)) { 331 switches::kAshEnableStickyEdges)) {
328 sticky_size = kStickyDistancePixels; 332 sticky_size = kStickyDistancePixels;
329 } else { 333 } else {
330 sticky_size = kScreenEdgeInset; 334 if ((details_.bounds_change & kBoundsChange_Resizes) && details_.is_touch)
335 sticky_size = kScreenEdgeInsetForTouchResize;
336 else
337 sticky_size = kScreenEdgeInset;
331 } 338 }
332 // |bounds| is in |window()->parent()|'s coordinates. 339 // |bounds| is in |window()->parent()|'s coordinates.
333 gfx::Rect bounds = CalculateBoundsForDrag(details_, location_in_parent); 340 gfx::Rect bounds = CalculateBoundsForDrag(details_, location_in_parent);
334 341
335 if (wm::IsWindowNormal(window())) 342 if (wm::IsWindowNormal(window()))
336 AdjustBoundsForMainWindow(sticky_size, &bounds); 343 AdjustBoundsForMainWindow(sticky_size, &bounds);
337 344
338 if (bounds != window()->bounds()) { 345 if (bounds != window()->bounds()) {
339 if (!did_move_or_resize_) { 346 if (!did_move_or_resize_) {
340 if (!details_.restore_bounds.IsEmpty()) 347 if (!details_.restore_bounds.IsEmpty())
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after
844 gfx::Rect area(ScreenAsh::GetDisplayBoundsInParent(window())); 851 gfx::Rect area(ScreenAsh::GetDisplayBoundsInParent(window()));
845 if (location.x() <= area.x()) 852 if (location.x() <= area.x())
846 return SNAP_LEFT_EDGE; 853 return SNAP_LEFT_EDGE;
847 if (location.x() >= area.right() - 1) 854 if (location.x() >= area.right() - 1)
848 return SNAP_RIGHT_EDGE; 855 return SNAP_RIGHT_EDGE;
849 return SNAP_NONE; 856 return SNAP_NONE;
850 } 857 }
851 858
852 } // namespace internal 859 } // namespace internal
853 } // namespace ash 860 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698