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

Side by Side Diff: ash/wm/default_window_resizer.cc

Issue 10008084: Add ctrl+drag feature for allowing resizing window with exact positioning. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add ctrl-drap for resizing window to pixel level. Created 8 years, 8 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
« no previous file with comments | « ash/wm/default_window_resizer.h ('k') | ash/wm/toplevel_window_event_filter.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/default_window_resizer.h" 5 #include "ash/wm/default_window_resizer.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/wm/root_window_event_filter.h" 8 #include "ash/wm/root_window_event_filter.h"
9 #include "ui/aura/client/aura_constants.h" 9 #include "ui/aura/client/aura_constants.h"
10 #include "ui/aura/root_window.h" 10 #include "ui/aura/root_window.h"
(...skipping 15 matching lines...) Expand all
26 // static 26 // static
27 DefaultWindowResizer* 27 DefaultWindowResizer*
28 DefaultWindowResizer::Create(aura::Window* window, 28 DefaultWindowResizer::Create(aura::Window* window,
29 const gfx::Point& location, 29 const gfx::Point& location,
30 int window_component, 30 int window_component,
31 int grid_size) { 31 int grid_size) {
32 Details details(window, location, window_component, grid_size); 32 Details details(window, location, window_component, grid_size);
33 return details.is_resizable ? new DefaultWindowResizer(details) : NULL; 33 return details.is_resizable ? new DefaultWindowResizer(details) : NULL;
34 } 34 }
35 35
36 void DefaultWindowResizer::Drag(const gfx::Point& location) { 36 void DefaultWindowResizer::Drag(const gfx::Point& location, int event_flags) {
37 gfx::Rect bounds(CalculateBoundsForDrag(details_, location)); 37 bool disable_snap_to_grid = event_flags & ui::EF_CONTROL_DOWN ? true : false;
38 gfx::Rect bounds(
39 CalculateBoundsForDrag(details_, location, disable_snap_to_grid));
38 if (bounds != details_.window->bounds()) { 40 if (bounds != details_.window->bounds()) {
39 did_move_or_resize_ = true; 41 did_move_or_resize_ = true;
40 details_.window->SetBounds(bounds); 42 details_.window->SetBounds(bounds);
41 } 43 }
42 } 44 }
43 45
44 void DefaultWindowResizer::CompleteDrag() { 46 void DefaultWindowResizer::CompleteDrag() {
45 if (details_.grid_size <= 1 || !did_move_or_resize_) 47 if (details_.grid_size <= 1 || !did_move_or_resize_)
46 return; 48 return;
47 gfx::Rect new_bounds( 49 gfx::Rect new_bounds(
48 AdjustBoundsToGrid(details_.window->bounds(), details_.grid_size)); 50 AdjustBoundsToGrid(details_.window->bounds(), details_.grid_size));
sky 2012/04/12 18:08:14 Isn't this going to snap it to the grid? Now that
jennyz 2012/04/12 18:25:16 CompleteDrag is only called when user release the
49 if (new_bounds == details_.window->bounds()) 51 if (new_bounds == details_.window->bounds())
50 return; 52 return;
51 53
52 if (new_bounds.size() != details_.window->bounds().size()) { 54 if (new_bounds.size() != details_.window->bounds().size()) {
53 // Don't attempt to animate a size change. 55 // Don't attempt to animate a size change.
54 details_.window->SetBounds(new_bounds); 56 details_.window->SetBounds(new_bounds);
55 return; 57 return;
56 } 58 }
57 59
58 ui::ScopedLayerAnimationSettings scoped_setter( 60 ui::ScopedLayerAnimationSettings scoped_setter(
(...skipping 14 matching lines...) Expand all
73 : details_(details), 75 : details_(details),
74 did_move_or_resize_(false), 76 did_move_or_resize_(false),
75 root_filter_(NULL) { 77 root_filter_(NULL) {
76 DCHECK(details_.is_resizable); 78 DCHECK(details_.is_resizable);
77 root_filter_ = Shell::GetInstance()->root_filter(); 79 root_filter_ = Shell::GetInstance()->root_filter();
78 if (root_filter_) 80 if (root_filter_)
79 root_filter_->LockCursor(); 81 root_filter_->LockCursor();
80 } 82 }
81 83
82 } // namespace aura 84 } // namespace aura
OLDNEW
« no previous file with comments | « ash/wm/default_window_resizer.h ('k') | ash/wm/toplevel_window_event_filter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698