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

Unified 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: Adjust unit tests with final behavior 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/wm/workspace/workspace_window_resizer.h ('k') | ash/wm/workspace/workspace_window_resizer_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
}
« no previous file with comments | « ash/wm/workspace/workspace_window_resizer.h ('k') | ash/wm/workspace/workspace_window_resizer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698