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

Side by Side Diff: ash/common/shelf/shelf_layout_manager.h

Issue 2700523004: Remove docked windows entirely in M59. (Closed)
Patch Set: Rebase and fix 1 test Created 3 years, 10 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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_COMMON_SHELF_SHELF_LAYOUT_MANAGER_H_ 5 #ifndef ASH_COMMON_SHELF_SHELF_LAYOUT_MANAGER_H_
6 #define ASH_COMMON_SHELF_SHELF_LAYOUT_MANAGER_H_ 6 #define ASH_COMMON_SHELF_SHELF_LAYOUT_MANAGER_H_
7 7
8 #include <memory> 8 #include <memory>
9 9
10 #include "ash/ash_export.h" 10 #include "ash/ash_export.h"
11 #include "ash/common/session/session_state_observer.h" 11 #include "ash/common/session/session_state_observer.h"
12 #include "ash/common/shelf/wm_shelf.h" 12 #include "ash/common/shelf/wm_shelf.h"
13 #include "ash/common/shell_observer.h" 13 #include "ash/common/shell_observer.h"
14 #include "ash/common/wm/dock/docked_window_layout_manager_observer.h"
15 #include "ash/common/wm/lock_state_observer.h" 14 #include "ash/common/wm/lock_state_observer.h"
16 #include "ash/common/wm/wm_snap_to_pixel_layout_manager.h" 15 #include "ash/common/wm/wm_snap_to_pixel_layout_manager.h"
17 #include "ash/common/wm/workspace/workspace_types.h" 16 #include "ash/common/wm/workspace/workspace_types.h"
18 #include "ash/common/wm_activation_observer.h" 17 #include "ash/common/wm_activation_observer.h"
19 #include "ash/public/cpp/shelf_types.h" 18 #include "ash/public/cpp/shelf_types.h"
20 #include "base/macros.h" 19 #include "base/macros.h"
21 #include "base/observer_list.h" 20 #include "base/observer_list.h"
22 #include "base/timer/timer.h" 21 #include "base/timer/timer.h"
23 #include "ui/gfx/geometry/insets.h" 22 #include "ui/gfx/geometry/insets.h"
24 #include "ui/gfx/geometry/rect.h" 23 #include "ui/gfx/geometry/rect.h"
(...skipping 16 matching lines...) Expand all
41 // ShelfLayoutManager is the layout manager responsible for the shelf and 40 // ShelfLayoutManager is the layout manager responsible for the shelf and
42 // status widgets. The shelf is given the total available width and told the 41 // status widgets. The shelf is given the total available width and told the
43 // width of the status area. This allows the shelf to draw the background and 42 // width of the status area. This allows the shelf to draw the background and
44 // layout to the status area. 43 // layout to the status area.
45 // To respond to bounds changes in the status area StatusAreaLayoutManager works 44 // To respond to bounds changes in the status area StatusAreaLayoutManager works
46 // closely with ShelfLayoutManager. 45 // closely with ShelfLayoutManager.
47 // On mus, widget bounds management is handled by the window manager. 46 // On mus, widget bounds management is handled by the window manager.
48 class ASH_EXPORT ShelfLayoutManager 47 class ASH_EXPORT ShelfLayoutManager
49 : public ShellObserver, 48 : public ShellObserver,
50 public WmActivationObserver, 49 public WmActivationObserver,
51 public DockedWindowLayoutManagerObserver,
52 public keyboard::KeyboardControllerObserver, 50 public keyboard::KeyboardControllerObserver,
53 public LockStateObserver, 51 public LockStateObserver,
54 public wm::WmSnapToPixelLayoutManager, 52 public wm::WmSnapToPixelLayoutManager,
55 public SessionStateObserver { 53 public SessionStateObserver {
56 public: 54 public:
57 ShelfLayoutManager(ShelfWidget* shelf_widget, WmShelf* wm_shelf); 55 ShelfLayoutManager(ShelfWidget* shelf_widget, WmShelf* wm_shelf);
58 ~ShelfLayoutManager() override; 56 ~ShelfLayoutManager() override;
59 57
60 bool updating_bounds() const { return updating_bounds_; } 58 bool updating_bounds() const { return updating_bounds_; }
61 59
62 // Clears internal data for shutdown process. 60 // Clears internal data for shutdown process.
63 void PrepareForShutdown(); 61 void PrepareForShutdown();
64 62
65 // Returns whether the shelf and its contents (shelf, status) are visible 63 // Returns whether the shelf and its contents (shelf, status) are visible
66 // on the screen. 64 // on the screen.
67 bool IsVisible() const; 65 bool IsVisible() const;
68 66
69 // Returns the ideal bounds of the shelf assuming it is visible. 67 // Returns the ideal bounds of the shelf assuming it is visible.
70 gfx::Rect GetIdealBounds(); 68 gfx::Rect GetIdealBounds();
71 69
72 // Returns the preferred size of the shelf for the target visibility state. 70 // Returns the preferred size of the shelf for the target visibility state.
73 gfx::Size GetPreferredSize(); 71 gfx::Size GetPreferredSize();
74 72
75 // Returns the docked area bounds.
76 const gfx::Rect& dock_bounds() const { return dock_bounds_; }
77
78 // Returns the bounds within the root window not occupied by the shelf nor the 73 // Returns the bounds within the root window not occupied by the shelf nor the
79 // virtual keyboard. 74 // virtual keyboard.
80 const gfx::Rect& user_work_area_bounds() const { 75 const gfx::Rect& user_work_area_bounds() const {
81 return user_work_area_bounds_; 76 return user_work_area_bounds_;
82 } 77 }
83 78
84 // Stops any animations and sets the bounds of the shelf and status widgets. 79 // Stops any animations and sets the bounds of the shelf and status widgets.
85 void LayoutShelfAndUpdateBounds(bool change_work_area); 80 void LayoutShelfAndUpdateBounds(bool change_work_area);
86 81
87 // Stops any animations, sets the bounds of the shelf and status widgets, and 82 // Stops any animations, sets the bounds of the shelf and status widgets, and
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 // Returns the AutoHideState. This value is determined from the shelf and 255 // Returns the AutoHideState. This value is determined from the shelf and
261 // tray. 256 // tray.
262 ShelfAutoHideState CalculateAutoHideState( 257 ShelfAutoHideState CalculateAutoHideState(
263 ShelfVisibilityState visibility_state) const; 258 ShelfVisibilityState visibility_state) const;
264 259
265 // Returns true if |window| is a descendant of the shelf. 260 // Returns true if |window| is a descendant of the shelf.
266 bool IsShelfWindow(WmWindow* window); 261 bool IsShelfWindow(WmWindow* window);
267 262
268 int GetWorkAreaInsets(const State& state, int size) const; 263 int GetWorkAreaInsets(const State& state, int size) const;
269 264
270 // Overridden from DockedWindowLayoutManagerObserver:
271 void OnDockBoundsChanging(
272 const gfx::Rect& dock_bounds,
273 DockedWindowLayoutManagerObserver::Reason reason) override;
274
275 // Called when the LoginUI changes from visible to invisible. 265 // Called when the LoginUI changes from visible to invisible.
276 void UpdateShelfVisibilityAfterLoginUIChange(); 266 void UpdateShelfVisibilityAfterLoginUIChange();
277 267
278 // Compute |target_bounds| opacity based on gesture and shelf visibility. 268 // Compute |target_bounds| opacity based on gesture and shelf visibility.
279 float ComputeTargetOpacity(const State& state); 269 float ComputeTargetOpacity(const State& state);
280 270
281 // Returns true if there is a fullscreen window open that causes the shelf 271 // Returns true if there is a fullscreen window open that causes the shelf
282 // to be hidden. 272 // to be hidden.
283 bool IsShelfHiddenForFullscreen() const; 273 bool IsShelfHiddenForFullscreen() const;
284 274
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 322
333 // Manage the auto-hide state during the gesture. 323 // Manage the auto-hide state during the gesture.
334 ShelfAutoHideState gesture_drag_auto_hide_state_; 324 ShelfAutoHideState gesture_drag_auto_hide_state_;
335 325
336 // Used to delay updating shelf background. 326 // Used to delay updating shelf background.
337 UpdateShelfObserver* update_shelf_observer_; 327 UpdateShelfObserver* update_shelf_observer_;
338 328
339 // The bounds of the keyboard. 329 // The bounds of the keyboard.
340 gfx::Rect keyboard_bounds_; 330 gfx::Rect keyboard_bounds_;
341 331
342 // The bounds of the dock.
343 gfx::Rect dock_bounds_;
344
345 // The bounds within the root window not occupied by the shelf nor the virtual 332 // The bounds within the root window not occupied by the shelf nor the virtual
346 // keyboard. 333 // keyboard.
347 gfx::Rect user_work_area_bounds_; 334 gfx::Rect user_work_area_bounds_;
348 335
349 // The height of the ChromeVox panel at the top of the screen, which 336 // The height of the ChromeVox panel at the top of the screen, which
350 // needs to be removed from the available work area. 337 // needs to be removed from the available work area.
351 int chromevox_panel_height_; 338 int chromevox_panel_height_;
352 339
353 // The show hide animation duration override or 0 for default. 340 // The show hide animation duration override or 0 for default.
354 int duration_override_in_ms_; 341 int duration_override_in_ms_;
355 342
356 // The current shelf background. Should not be assigned to directly, use 343 // The current shelf background. Should not be assigned to directly, use
357 // MaybeUpdateShelfBackground() instead. 344 // MaybeUpdateShelfBackground() instead.
358 ShelfBackgroundType shelf_background_type_; 345 ShelfBackgroundType shelf_background_type_;
359 346
360 DISALLOW_COPY_AND_ASSIGN(ShelfLayoutManager); 347 DISALLOW_COPY_AND_ASSIGN(ShelfLayoutManager);
361 }; 348 };
362 349
363 } // namespace ash 350 } // namespace ash
364 351
365 #endif // ASH_COMMON_SHELF_SHELF_LAYOUT_MANAGER_H_ 352 #endif // ASH_COMMON_SHELF_SHELF_LAYOUT_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698