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

Side by Side Diff: ash/wm/workspace/multi_window_resize_controller.h

Issue 771543002: Improve the logic for hiding the multi-window resize handle (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@fix_multi_window
Patch Set: Created 6 years 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
« no previous file with comments | « no previous file | ash/wm/workspace/multi_window_resize_controller.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 #ifndef ASH_WM_WORKSPACE_MULTI_WINDOW_RESIZE_CONTROLLER_H_ 5 #ifndef ASH_WM_WORKSPACE_MULTI_WINDOW_RESIZE_CONTROLLER_H_
6 #define ASH_WM_WORKSPACE_MULTI_WINDOW_RESIZE_CONTROLLER_H_ 6 #define ASH_WM_WORKSPACE_MULTI_WINDOW_RESIZE_CONTROLLER_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "ash/ash_export.h" 10 #include "ash/ash_export.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 Direction direction; 80 Direction direction;
81 81
82 // Windows after |window2| that are to be resized. Determined at the time 82 // Windows after |window2| that are to be resized. Determined at the time
83 // the resize starts. 83 // the resize starts.
84 std::vector<aura::Window*> other_windows; 84 std::vector<aura::Window*> other_windows;
85 }; 85 };
86 86
87 class ResizeMouseWatcherHost; 87 class ResizeMouseWatcherHost;
88 class ResizeView; 88 class ResizeView;
89 89
90 void CreateMouseWatcher();
91
90 // Returns a ResizeWindows based on the specified arguments. Use is_valid() 92 // Returns a ResizeWindows based on the specified arguments. Use is_valid()
91 // to test if the return value is a valid multi window resize location. 93 // to test if the return value is a valid multi window resize location.
92 ResizeWindows DetermineWindows(aura::Window* window, 94 ResizeWindows DetermineWindows(aura::Window* window,
93 int window_component, 95 int window_component,
94 const gfx::Point& point) const; 96 const gfx::Point& point) const;
95 97
96 // Variant of DetermineWindows() that uses the current location of the mouse 98 // Variant of DetermineWindows() that uses the current location of the mouse
97 // to determine the resize windows. 99 // to determine the resize windows.
98 ResizeWindows DetermineWindowsFromScreenPoint(aura::Window* window) const; 100 ResizeWindows DetermineWindowsFromScreenPoint(aura::Window* window) const;
99 101
100 // Finds a window by edge (one of the constants HitTestCompat. 102 // Finds a window by edge (one of the constants HitTestCompat.
101 aura::Window* FindWindowByEdge(aura::Window* window_to_ignore, 103 aura::Window* FindWindowByEdge(aura::Window* window_to_ignore,
102 int edge_want, 104 int edge_want,
103 int x, 105 int x_in_parent,
104 int y) const; 106 int y_in_parent) const;
105 107
106 // Returns the first window touching |window|. 108 // Returns the first window touching |window|.
107 aura::Window* FindWindowTouching(aura::Window* window, 109 aura::Window* FindWindowTouching(aura::Window* window,
108 Direction direction) const; 110 Direction direction) const;
109 111
110 // Places any windows touching |start| into |others|. 112 // Places any windows touching |start| into |others|.
111 void FindWindowsTouching(aura::Window* start, 113 void FindWindowsTouching(aura::Window* start,
112 Direction direction, 114 Direction direction,
113 std::vector<aura::Window*>* others) const; 115 std::vector<aura::Window*>* others) const;
114 116
115 // Hides the window after a delay.
116 void DelayedHide();
117
118 // Shows the resizer if the mouse is still at a valid location. This is called 117 // Shows the resizer if the mouse is still at a valid location. This is called
119 // from the |show_timer_|. 118 // from the |show_timer_|.
120 void ShowIfValidMouseLocation(); 119 void ShowIfValidMouseLocation();
121 120
122 // Shows the widget immediately. 121 // Shows the widget immediately.
123 void ShowNow(); 122 void ShowNow();
124 123
125 // Returns true if the widget is showing. 124 // Returns true if the widget is showing.
126 bool IsShowing() const; 125 bool IsShowing() const;
127 126
(...skipping 10 matching lines...) Expand all
138 void CancelResize(); 137 void CancelResize();
139 138
140 // Returns the bounds for the resize widget. 139 // Returns the bounds for the resize widget.
141 gfx::Rect CalculateResizeWidgetBounds( 140 gfx::Rect CalculateResizeWidgetBounds(
142 const gfx::Point& location_in_parent) const; 141 const gfx::Point& location_in_parent) const;
143 142
144 // Returns true if |location_in_screen| is over the resize windows 143 // Returns true if |location_in_screen| is over the resize windows
145 // (or the resize widget itself). 144 // (or the resize widget itself).
146 bool IsOverWindows(const gfx::Point& location_in_screen) const; 145 bool IsOverWindows(const gfx::Point& location_in_screen) const;
147 146
148 // Returns true if |location_in_screen| is over |window|. 147 // Returns true if |location_in_screen| is over |component| in |window|.
149 bool IsOverWindow(aura::Window* window, 148 bool IsOverComponent(aura::Window* window,
150 const gfx::Point& location_in_screen, 149 const gfx::Point& location_in_screen,
151 int component) const; 150 int component) const;
152 151
153 // Windows and direction to resize. 152 // Windows and direction to resize.
154 ResizeWindows windows_; 153 ResizeWindows windows_;
155 154
156 // Timer before hiding.
157 base::OneShotTimer<MultiWindowResizeController> hide_timer_;
158
159 // Timer used before showing. 155 // Timer used before showing.
160 base::OneShotTimer<MultiWindowResizeController> show_timer_; 156 base::OneShotTimer<MultiWindowResizeController> show_timer_;
161 157
162 scoped_ptr<views::Widget> resize_widget_; 158 scoped_ptr<views::Widget> resize_widget_;
163 159
164 // If non-null we're in a resize loop. 160 // If non-null we're in a resize loop.
165 scoped_ptr<WorkspaceWindowResizer> window_resizer_; 161 scoped_ptr<WorkspaceWindowResizer> window_resizer_;
166 162
167 // Mouse coordinate passed to Show() in container's coodinates. 163 // Mouse coordinate passed to Show() in container's coodinates.
168 gfx::Point show_location_in_parent_; 164 gfx::Point show_location_in_parent_;
169 165
170 // Bounds the widget was last shown at in screen coordinates. 166 // Bounds the widget was last shown at in screen coordinates.
171 gfx::Rect show_bounds_in_screen_; 167 gfx::Rect show_bounds_in_screen_;
172 168
173 // Used to detect whether the mouse is over the windows. While 169 // Used to detect whether the mouse is over the windows. While
174 // |resize_widget_| is non-NULL (ie the widget is showing) we ignore calls 170 // |resize_widget_| is non-NULL (ie the widget is showing) we ignore calls
175 // to Show(). 171 // to Show().
176 scoped_ptr<views::MouseWatcher> mouse_watcher_; 172 scoped_ptr<views::MouseWatcher> mouse_watcher_;
177 173
178 DISALLOW_COPY_AND_ASSIGN(MultiWindowResizeController); 174 DISALLOW_COPY_AND_ASSIGN(MultiWindowResizeController);
179 }; 175 };
180 176
181 } // namespace ash 177 } // namespace ash
182 178
183 #endif // ASH_WM_WORKSPACE_MULTI_WINDOW_RESIZE_CONTROLLER_H_ 179 #endif // ASH_WM_WORKSPACE_MULTI_WINDOW_RESIZE_CONTROLLER_H_
OLDNEW
« no previous file with comments | « no previous file | ash/wm/workspace/multi_window_resize_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698