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

Unified Diff: ash/mus/shelf_delegate_mus.cc

Issue 2007003002: mash: Preliminary support for shelf auto-hide (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@shutdown
Patch Set: cleanup Created 4 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 side-by-side diff with in-line comments
Download patch
Index: ash/mus/shelf_delegate_mus.cc
diff --git a/ash/mus/shelf_delegate_mus.cc b/ash/mus/shelf_delegate_mus.cc
index 2b11d7cbd04f62e7fef06fe6b0eef135b7ebeb01..47c4adc0de1a151e860091c4dd6776df547025ab 100644
--- a/ash/mus/shelf_delegate_mus.cc
+++ b/ash/mus/shelf_delegate_mus.cc
@@ -193,11 +193,16 @@ ShelfDelegateMus::ShelfDelegateMus(ShelfModel* model)
ShelfDelegateMus::~ShelfDelegateMus() {}
+///////////////////////////////////////////////////////////////////////////////
+// ShelfDelegate:
+
void ShelfDelegateMus::OnShelfCreated(Shelf* shelf) {
SetShelfPreferredSizes(shelf);
+ shelf->shelf_layout_manager()->AddObserver(this);
}
void ShelfDelegateMus::OnShelfDestroyed(Shelf* shelf) {
+ shelf->shelf_layout_manager()->RemoveObserver(this);
NOTIMPLEMENTED();
}
@@ -254,6 +259,26 @@ void ShelfDelegateMus::UnpinAppWithID(const std::string& app_id) {
NOTIMPLEMENTED();
}
+///////////////////////////////////////////////////////////////////////////////
+// ShelfLayoutManagerObserver:
+
+void ShelfDelegateMus::DidChangeVisibilityState(
+ ShelfLayoutManager* layout_manager,
+ ShelfVisibilityState new_state) {
+ // Push the new preferred size to the window manager. For example, when the
+ // shelf is auto-hidden it becomes a very short "light bar".
+ SetShelfPreferredSizes(layout_manager->shelf_widget()->shelf());
+}
+
+void ShelfDelegateMus::OnAutoHideStateChanged(
+ ShelfLayoutManager* layout_manager,
+ ShelfAutoHideState new_state) {
+ SetShelfPreferredSizes(layout_manager->shelf_widget()->shelf());
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// mash::shelf::mojom::ShelfController:
+
void ShelfDelegateMus::AddObserver(
mash::shelf::mojom::ShelfObserverAssociatedPtrInfo observer) {
mash::shelf::mojom::ShelfObserverAssociatedPtr observer_ptr;
@@ -451,7 +476,7 @@ void ShelfDelegateMus::SetShelfPreferredSizes(Shelf* shelf) {
ShelfWidget* widget = shelf->shelf_widget();
ShelfLayoutManager* layout_manager = widget->shelf_layout_manager();
mus::Window* window = aura::GetMusWindow(widget->GetNativeWindow());
- gfx::Size size = layout_manager->GetIdealBounds().size();
+ gfx::Size size = layout_manager->GetPreferredSize();
window->SetSharedProperty<gfx::Size>(
mus::mojom::WindowManager::kPreferredSize_Property, size);

Powered by Google App Engine
This is Rietveld 408576698