OLD | NEW |
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 #ifndef ASH_WM_WORKSPACE_WINDOW_RESIZER_H_ | 5 #ifndef ASH_WM_WORKSPACE_WINDOW_RESIZER_H_ |
6 #define ASH_WM_WORKSPACE_WINDOW_RESIZER_H_ | 6 #define ASH_WM_WORKSPACE_WINDOW_RESIZER_H_ |
7 | 7 |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "ash/wm/window_resizer.h" | 10 #include "ash/wm/window_resizer.h" |
(...skipping 24 matching lines...) Expand all Loading... |
35 public: | 35 public: |
36 // When dragging an attached window this is the min size we'll make sure is | 36 // When dragging an attached window this is the min size we'll make sure is |
37 // visible. In the vertical direction we take the max of this and that from | 37 // visible. In the vertical direction we take the max of this and that from |
38 // the delegate. | 38 // the delegate. |
39 static const int kMinOnscreenSize; | 39 static const int kMinOnscreenSize; |
40 | 40 |
41 // Min height we'll force on screen when dragging the caption. | 41 // Min height we'll force on screen when dragging the caption. |
42 // TODO: this should come from a property on the window. | 42 // TODO: this should come from a property on the window. |
43 static const int kMinOnscreenHeight; | 43 static const int kMinOnscreenHeight; |
44 | 44 |
| 45 // Snap region when dragging close to the edges. That is, as the window gets |
| 46 // this close to an edge of the screen it snaps to the edge. |
| 47 static const int kScreenEdgeInset; |
| 48 |
45 virtual ~WorkspaceWindowResizer(); | 49 virtual ~WorkspaceWindowResizer(); |
46 | 50 |
47 static WorkspaceWindowResizer* Create( | 51 static WorkspaceWindowResizer* Create( |
48 aura::Window* window, | 52 aura::Window* window, |
49 const gfx::Point& location_in_parent, | 53 const gfx::Point& location_in_parent, |
50 int window_component, | 54 int window_component, |
51 const std::vector<aura::Window*>& attached_windows); | 55 const std::vector<aura::Window*>& attached_windows); |
52 | 56 |
53 // Returns true if the drag will result in changing the window in anyway. | 57 // Returns true if the drag will result in changing the window in anyway. |
54 bool is_resizable() const { return details_.is_resizable; } | 58 bool is_resizable() const { return details_.is_resizable; } |
(...skipping 19 matching lines...) Expand all Loading... |
74 enum SnapType { | 78 enum SnapType { |
75 // Snap to the left/right edge of the screen. | 79 // Snap to the left/right edge of the screen. |
76 SNAP_LEFT_EDGE, | 80 SNAP_LEFT_EDGE, |
77 SNAP_RIGHT_EDGE, | 81 SNAP_RIGHT_EDGE, |
78 | 82 |
79 // No snap position. | 83 // No snap position. |
80 SNAP_NONE | 84 SNAP_NONE |
81 }; | 85 }; |
82 | 86 |
83 // Returns the final bounds to place the window at. This differs from | 87 // Returns the final bounds to place the window at. This differs from |
84 // the current if there is a grid. | 88 // the current when snapping. |
85 gfx::Rect GetFinalBounds(const gfx::Rect& bounds, int grid_size) const; | 89 gfx::Rect GetFinalBounds(const gfx::Rect& bounds) const; |
86 | 90 |
87 // Lays out the attached windows. |bounds| is the bounds of the main window. | 91 // Lays out the attached windows. |bounds| is the bounds of the main window. |
88 void LayoutAttachedWindows(const gfx::Rect& bounds, int grid_size); | 92 void LayoutAttachedWindows(const gfx::Rect& bounds); |
89 | 93 |
90 // Calculates the size (along the primary axis) of the attached windows. | 94 // Calculates the size (along the primary axis) of the attached windows. |
91 // |initial_size| is the initial size of the main window, |current_size| the | 95 // |initial_size| is the initial size of the main window, |current_size| the |
92 // new size of the main window, |start| the position to layout the attached | 96 // new size of the main window, |start| the position to layout the attached |
93 // windows from and |end| the coordinate to position to. | 97 // windows from and |end| the coordinate to position to. |
94 void CalculateAttachedSizes( | 98 void CalculateAttachedSizes(int initial_size, |
95 int initial_size, | 99 int current_size, |
96 int current_size, | 100 int start, |
97 int start, | 101 int end, |
98 int end, | 102 std::vector<int>* sizes) const; |
99 int grid_size, | |
100 std::vector<int>* sizes) const; | |
101 | 103 |
102 // Adjusts the bounds to enforce that windows are vertically contained in the | 104 // Adjusts the bounds to enforce that windows are vertically contained in the |
103 // work area. | 105 // work area. |
104 void AdjustBoundsForMainWindow(gfx::Rect* bounds, int grid_size) const; | 106 void AdjustBoundsForMainWindow(gfx::Rect* bounds, int grid_size) const; |
105 | 107 |
106 // Snaps the window bounds to the work area edges if necessary. | 108 // Snaps the window bounds to the work area edges if necessary. |
107 void SnapToWorkAreaEdges( | 109 void SnapToWorkAreaEdges( |
108 const gfx::Rect& work_area, | 110 const gfx::Rect& work_area, |
109 gfx::Rect* bounds, | 111 gfx::Rect* bounds, |
110 int grid_size) const; | 112 int grid_size) const; |
111 | 113 |
112 // Returns true if the window touches the bottom edge of the work area. | 114 // Returns true if the window touches the bottom edge of the work area. |
113 bool TouchesBottomOfScreen() const; | 115 bool TouchesBottomOfScreen() const; |
114 | 116 |
115 // Returns a coordinate along the primary axis. Used to share code for | 117 // Returns a coordinate along the primary axis. Used to share code for |
116 // left/right multi window resize and top/bottom resize. | 118 // left/right multi window resize and top/bottom resize. |
117 int PrimaryAxisSize(const gfx::Size& size) const; | 119 int PrimaryAxisSize(const gfx::Size& size) const; |
118 int PrimaryAxisCoordinate(int x, int y) const; | 120 int PrimaryAxisCoordinate(int x, int y) const; |
119 | 121 |
120 // Updates the bounds of the phantom window for window snapping. | 122 // Updates the bounds of the phantom window for window snapping. |
121 void UpdateSnapPhantomWindow(const gfx::Point& location, | 123 void UpdateSnapPhantomWindow(const gfx::Point& location, |
122 const gfx::Rect& bounds, | 124 const gfx::Rect& bounds); |
123 int grid_size); | |
124 | 125 |
125 // Updates the bounds of the phantom window for window dragging. Set true on | 126 // Updates the bounds of the phantom window for window dragging. Set true on |
126 // |in_original_root| if the pointer is still in |window()->GetRootWindow()|. | 127 // |in_original_root| if the pointer is still in |window()->GetRootWindow()|. |
127 void UpdateDragPhantomWindow(const gfx::Rect& bounds, bool in_original_root); | 128 void UpdateDragPhantomWindow(const gfx::Rect& bounds, bool in_original_root); |
128 | 129 |
129 // Restacks the windows z-order position so that one of the windows is at the | 130 // Restacks the windows z-order position so that one of the windows is at the |
130 // top of the z-order, and the rest directly underneath it. | 131 // top of the z-order, and the rest directly underneath it. |
131 void RestackWindows(); | 132 void RestackWindows(); |
132 | 133 |
133 // Returns the SnapType for the specified point. SNAP_NONE is used if no | 134 // Returns the SnapType for the specified point. SNAP_NONE is used if no |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 // been deleted. | 203 // been deleted. |
203 bool* destroyed_; | 204 bool* destroyed_; |
204 | 205 |
205 DISALLOW_COPY_AND_ASSIGN(WorkspaceWindowResizer); | 206 DISALLOW_COPY_AND_ASSIGN(WorkspaceWindowResizer); |
206 }; | 207 }; |
207 | 208 |
208 } // namespace internal | 209 } // namespace internal |
209 } // namespace ash | 210 } // namespace ash |
210 | 211 |
211 #endif // ASH_WM_WORKSPACE_WINDOW_RESIZER_H_ | 212 #endif // ASH_WM_WORKSPACE_WINDOW_RESIZER_H_ |
OLD | NEW |