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

Side by Side Diff: ash/wm_window.h

Issue 2901663003: chromeos: converts WindowState to aura::Window (Closed)
Patch Set: moar Created 3 years, 7 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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_WINDOW_H_ 5 #ifndef ASH_WM_WINDOW_H_
6 #define ASH_WM_WINDOW_H_ 6 #define ASH_WM_WINDOW_H_
7 7
8 #include <memory> 8 #include <memory>
9 #include <vector> 9 #include <vector>
10 10
11 #include "ash/ash_export.h" 11 #include "ash/ash_export.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/observer_list.h" 13 #include "base/observer_list.h"
14 #include "base/strings/string16.h" 14 #include "base/strings/string16.h"
15 #include "base/time/time.h" 15 #include "base/time/time.h"
16 #include "ui/aura/window_observer.h"
17 #include "ui/base/ui_base_types.h" 16 #include "ui/base/ui_base_types.h"
18 #include "ui/compositor/layer_animation_element.h" 17 #include "ui/compositor/layer_animation_element.h"
19 #include "ui/wm/core/transient_window_observer.h" 18 #include "ui/wm/core/transient_window_observer.h"
20 #include "ui/wm/core/window_animations.h" 19 #include "ui/wm/core/window_animations.h"
21 #include "ui/wm/public/window_types.h" 20 #include "ui/wm/public/window_types.h"
22 21
23 namespace display { 22 namespace display {
24 class Display; 23 class Display;
25 } 24 }
26 25
(...skipping 19 matching lines...) Expand all
46 45
47 namespace wm { 46 namespace wm {
48 class WindowState; 47 class WindowState;
49 } 48 }
50 49
51 // WmWindow abstracts away differences between ash running in classic mode 50 // WmWindow abstracts away differences between ash running in classic mode
52 // and ash running with aura-mus. 51 // and ash running with aura-mus.
53 // 52 //
54 // WmWindow is tied to the life of the underlying aura::Window. Use the 53 // WmWindow is tied to the life of the underlying aura::Window. Use the
55 // static Get() function to obtain a WmWindow from an aura::Window. 54 // static Get() function to obtain a WmWindow from an aura::Window.
56 class ASH_EXPORT WmWindow : public aura::WindowObserver, 55 class ASH_EXPORT WmWindow : public ::wm::TransientWindowObserver {
57 public ::wm::TransientWindowObserver {
58 public: 56 public:
59 // See comments in SetBoundsInScreen(). 57 // See comments in SetBoundsInScreen().
60 enum class BoundsInScreenBehavior { 58 enum class BoundsInScreenBehavior {
61 USE_LOCAL_COORDINATES, 59 USE_LOCAL_COORDINATES,
62 USE_SCREEN_COORDINATES, 60 USE_SCREEN_COORDINATES,
63 }; 61 };
64 62
65 using Windows = std::vector<WmWindow*>; 63 using Windows = std::vector<WmWindow*>;
66 64
67 // NOTE: this class is owned by the corresponding window. You shouldn't delete 65 // NOTE: this class is owned by the corresponding window. You shouldn't delete
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 void Animate(::wm::WindowAnimationType type); 191 void Animate(::wm::WindowAnimationType type);
194 void StopAnimatingProperty( 192 void StopAnimatingProperty(
195 ui::LayerAnimationElement::AnimatableProperty property); 193 ui::LayerAnimationElement::AnimatableProperty property);
196 void SetChildWindowVisibilityChangesAnimated(); 194 void SetChildWindowVisibilityChangesAnimated();
197 195
198 // See description in ui::Layer. 196 // See description in ui::Layer.
199 void SetMasksToBounds(bool value); 197 void SetMasksToBounds(bool value);
200 void SetBounds(const gfx::Rect& bounds); 198 void SetBounds(const gfx::Rect& bounds);
201 void SetBoundsWithTransitionDelay(const gfx::Rect& bounds, 199 void SetBoundsWithTransitionDelay(const gfx::Rect& bounds,
202 base::TimeDelta delta); 200 base::TimeDelta delta);
203 // Sets the bounds in such a way that LayoutManagers are circumvented.
204 void SetBoundsDirect(const gfx::Rect& bounds);
205 void SetBoundsDirectAnimated(const gfx::Rect& bounds);
206 void SetBoundsDirectCrossFade(const gfx::Rect& bounds);
207 201
208 // Sets the bounds in two distinct ways. The exact behavior is dictated by 202 // Sets the bounds in two distinct ways. The exact behavior is dictated by
209 // the value of BoundsInScreenBehavior set on the parent: 203 // the value of BoundsInScreenBehavior set on the parent:
210 // 204 //
211 // USE_LOCAL_COORDINATES: the bounds are applied as is to the window. In other 205 // USE_LOCAL_COORDINATES: the bounds are applied as is to the window. In other
212 // words this behaves the same as if SetBounds(bounds_in_screen) was used. 206 // words this behaves the same as if SetBounds(bounds_in_screen) was used.
213 // This is the default. 207 // This is the default.
214 // USE_SCREEN_COORDINATES: the bounds are actual screen bounds and converted 208 // USE_SCREEN_COORDINATES: the bounds are actual screen bounds and converted
215 // from the display. In this case the window may move to a different 209 // from the display. In this case the window may move to a different
216 // display if allowed (see SetLockedToRoot()). 210 // display if allowed (see SetLockedToRoot()).
217 void SetBoundsInScreen(const gfx::Rect& bounds_in_screen, 211 void SetBoundsInScreen(const gfx::Rect& bounds_in_screen,
218 const display::Display& dst_display); 212 const display::Display& dst_display);
219 gfx::Rect GetBoundsInScreen() const; 213 gfx::Rect GetBoundsInScreen() const;
220 const gfx::Rect& GetBounds() const; 214 const gfx::Rect& GetBounds() const;
221 gfx::Rect GetTargetBounds(); 215 gfx::Rect GetTargetBounds();
222 void ClearRestoreBounds(); 216 void ClearRestoreBounds();
223 void SetRestoreBoundsInScreen(const gfx::Rect& bounds); 217 void SetRestoreBoundsInScreen(const gfx::Rect& bounds);
224 gfx::Rect GetRestoreBoundsInScreen() const; 218 gfx::Rect GetRestoreBoundsInScreen() const;
225 219
226 bool Contains(const WmWindow* other) const; 220 bool Contains(const WmWindow* other) const;
227 221
228 void SetShowState(ui::WindowShowState show_state); 222 void SetShowState(ui::WindowShowState show_state);
229 ui::WindowShowState GetShowState() const; 223 ui::WindowShowState GetShowState() const;
230 224
231 void SetPreFullscreenShowState(ui::WindowShowState show_state); 225 void SetPreFullscreenShowState(ui::WindowShowState show_state);
232 226
233 // Sets the restore bounds and show state overrides. These values take
234 // precedence over the restore bounds and restore show state (if set).
235 // If |bounds_override| is empty the values are cleared.
236 void SetRestoreOverrides(const gfx::Rect& bounds_override,
237 ui::WindowShowState window_state_override);
238
239 // If |value| is true the window can not be moved to another root, regardless 227 // If |value| is true the window can not be moved to another root, regardless
240 // of the bounds set on it. 228 // of the bounds set on it.
241 void SetLockedToRoot(bool value); 229 void SetLockedToRoot(bool value);
242 bool IsLockedToRoot() const; 230 bool IsLockedToRoot() const;
243 231
244 void SetCapture(); 232 void SetCapture();
245 bool HasCapture(); 233 bool HasCapture();
246 void ReleaseCapture(); 234 void ReleaseCapture();
247 235
248 bool HasRestoreBounds() const; 236 bool HasRestoreBounds() const;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 // 304 //
317 // Also note that the target of these events is always an aura::Window. 305 // Also note that the target of these events is always an aura::Window.
318 void AddLimitedPreTargetHandler(ui::EventHandler* handler); 306 void AddLimitedPreTargetHandler(ui::EventHandler* handler);
319 void RemoveLimitedPreTargetHandler(ui::EventHandler* handler); 307 void RemoveLimitedPreTargetHandler(ui::EventHandler* handler);
320 308
321 private: 309 private:
322 friend class WmWindowTestApi; 310 friend class WmWindowTestApi;
323 311
324 explicit WmWindow(aura::Window* window); 312 explicit WmWindow(aura::Window* window);
325 313
326 // aura::WindowObserver:
327 void OnWindowPropertyChanged(aura::Window* window,
328 const void* key,
329 intptr_t old) override;
330
331 // ::wm::TransientWindowObserver overrides: 314 // ::wm::TransientWindowObserver overrides:
332 void OnTransientChildAdded(aura::Window* window, 315 void OnTransientChildAdded(aura::Window* window,
333 aura::Window* transient) override; 316 aura::Window* transient) override;
334 void OnTransientChildRemoved(aura::Window* window, 317 void OnTransientChildRemoved(aura::Window* window,
335 aura::Window* transient) override; 318 aura::Window* transient) override;
336 319
337 aura::Window* window_; 320 aura::Window* window_;
338 321
339 bool added_transient_observer_ = false; 322 bool added_transient_observer_ = false;
340 base::ObserverList<WmTransientWindowObserver> transient_observers_; 323 base::ObserverList<WmTransientWindowObserver> transient_observers_;
341 324
342 // If true child windows should get a slightly larger hit region to make 325 // If true child windows should get a slightly larger hit region to make
343 // resizing easier. 326 // resizing easier.
344 bool children_use_extended_hit_region_ = false; 327 bool children_use_extended_hit_region_ = false;
345 328
346 // Default value for |use_empty_minimum_size_for_testing_|. 329 // Default value for |use_empty_minimum_size_for_testing_|.
347 static bool default_use_empty_minimum_size_for_testing_; 330 static bool default_use_empty_minimum_size_for_testing_;
348 331
349 // If true the minimum size is 0x0, default is minimum size comes from widget. 332 // If true the minimum size is 0x0, default is minimum size comes from widget.
350 bool use_empty_minimum_size_for_testing_; 333 bool use_empty_minimum_size_for_testing_;
351 334
352 DISALLOW_COPY_AND_ASSIGN(WmWindow); 335 DISALLOW_COPY_AND_ASSIGN(WmWindow);
353 }; 336 };
354 337
355 } // namespace ash 338 } // namespace ash
356 339
357 #endif // ASH_WM_WINDOW_H_ 340 #endif // ASH_WM_WINDOW_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698