| Index: ash/wm/shelf_layout_manager.h
|
| diff --git a/ash/wm/shelf_layout_manager.h b/ash/wm/shelf_layout_manager.h
|
| index 5396e56d68131896047badb3275d9b804599c1f1..eb1e4b1301f520eaa185389313a3fe64fdf57a8c 100644
|
| --- a/ash/wm/shelf_layout_manager.h
|
| +++ b/ash/wm/shelf_layout_manager.h
|
| @@ -10,14 +10,11 @@
|
| #include "ash/launcher/launcher.h"
|
| #include "base/basictypes.h"
|
| #include "base/compiler_specific.h"
|
| +#include "base/timer.h"
|
| #include "ui/aura/layout_manager.h"
|
| #include "ui/gfx/insets.h"
|
| #include "ui/gfx/rect.h"
|
|
|
| -namespace aura {
|
| -class RootWindow;
|
| -}
|
| -
|
| namespace views {
|
| class Widget;
|
| }
|
| @@ -57,6 +54,9 @@ class ASH_EXPORT ShelfLayoutManager : public aura::LayoutManager {
|
| // the invisible parts of the launcher.
|
| static const int kWorkspaceAreaBottomInset;
|
|
|
| + // Height of the shelf when auto-hidden.
|
| + static const int kAutoHideHeight;
|
| +
|
| explicit ShelfLayoutManager(views::Widget* status);
|
| virtual ~ShelfLayoutManager();
|
|
|
| @@ -85,11 +85,13 @@ class ASH_EXPORT ShelfLayoutManager : public aura::LayoutManager {
|
| void LayoutShelf();
|
|
|
| // Sets the visibility of the shelf to |state|.
|
| - void SetState(VisibilityState visibility_state,
|
| - AutoHideState auto_hide_state);
|
| + void SetState(VisibilityState visibility_state);
|
| VisibilityState visibility_state() const { return state_.visibility_state; }
|
| AutoHideState auto_hide_state() const { return state_.auto_hide_state; }
|
|
|
| + // Invoked by the shelf/launcher when the auto-hide state may have changed.
|
| + void UpdateAutoHideState();
|
| +
|
| // Sets whether any windows overlap the shelf. If a window overlaps the shelf
|
| // the shelf renders slightly differently.
|
| void SetWindowOverlapsShelf(bool value);
|
| @@ -104,6 +106,8 @@ class ASH_EXPORT ShelfLayoutManager : public aura::LayoutManager {
|
| const gfx::Rect& requested_bounds) OVERRIDE;
|
|
|
| private:
|
| + class AutoHideEventFilter;
|
| +
|
| struct TargetBounds {
|
| TargetBounds() : opacity(0.0f) {}
|
|
|
| @@ -142,6 +146,13 @@ class ASH_EXPORT ShelfLayoutManager : public aura::LayoutManager {
|
| // Returns whether the launcher should draw a background.
|
| bool GetLauncherPaintsBackground() const;
|
|
|
| + // Updates the auto hide state immediately.
|
| + void UpdateAutoHideStateNow();
|
| +
|
| + // Returns the AutoHideState. This value is determined from the launcher and
|
| + // tray.
|
| + AutoHideState CalculateAutoHideState(VisibilityState visibility_state) const;
|
| +
|
| // True when inside LayoutShelf method. Used to prevent calling LayoutShelf
|
| // again from SetChildBounds().
|
| bool in_layout_;
|
| @@ -158,7 +169,11 @@ class ASH_EXPORT ShelfLayoutManager : public aura::LayoutManager {
|
| // Do any windows overlap the shelf? This is maintained by WorkspaceManager.
|
| bool window_overlaps_shelf_;
|
|
|
| - aura::RootWindow* root_window_;
|
| + base::OneShotTimer<ShelfLayoutManager> auto_hide_timer_;
|
| +
|
| + // EventFilter used to detect when user moves the mouse over the launcher to
|
| + // trigger showing the launcher.
|
| + scoped_ptr<AutoHideEventFilter> event_filter_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ShelfLayoutManager);
|
| };
|
|
|