Index: ash/mus/shelf_delegate_mus.cc |
diff --git a/ash/mus/shelf_delegate_mus.cc b/ash/mus/shelf_delegate_mus.cc |
index 2102ff2cc07201f4f6a4c258eb466095fd8d9a12..20fd6ce22fb89de048a673441bfc48fad9ea832e 100644 |
--- a/ash/mus/shelf_delegate_mus.cc |
+++ b/ash/mus/shelf_delegate_mus.cc |
@@ -116,6 +116,7 @@ ShelfDelegateMus::ShelfDelegateMus(ShelfModel* model) |
: model_(model), binding_(this) { |
mojo::Connector* connector = |
views::WindowManagerConnection::Get()->connector(); |
+ connector->ConnectToInterface("mojo:desktop_wm", &shelf_layout_); |
connector->ConnectToInterface("mojo:desktop_wm", &user_window_controller_); |
user_window_controller_->AddUserWindowObserver( |
binding_.CreateInterfacePtrAndBind()); |
@@ -124,19 +125,7 @@ ShelfDelegateMus::ShelfDelegateMus(ShelfModel* model) |
ShelfDelegateMus::~ShelfDelegateMus() {} |
void ShelfDelegateMus::OnShelfCreated(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(); |
- window->SetSharedProperty<gfx::Size>( |
- mus::mojom::WindowManager::kPreferredSize_Property, size); |
- |
- StatusAreaWidget* status_widget = widget->status_area_widget(); |
- mus::Window* status_window = |
- aura::GetMusWindow(status_widget->GetNativeWindow()); |
- gfx::Size status_size = status_widget->GetWindowBoundsInScreen().size(); |
- status_window->SetSharedProperty<gfx::Size>( |
- mus::mojom::WindowManager::kPreferredSize_Property, status_size); |
+ SetShelfPreferredSizes(shelf); |
} |
void ShelfDelegateMus::OnShelfDestroyed(Shelf* shelf) { |
@@ -144,6 +133,10 @@ void ShelfDelegateMus::OnShelfDestroyed(Shelf* shelf) { |
} |
void ShelfDelegateMus::OnShelfAlignmentChanged(Shelf* shelf) { |
+ SetShelfPreferredSizes(shelf); |
+ shelf_layout_->SetAlignment( |
+ static_cast<mash::wm::mojom::ShelfAlignment>(shelf->GetAlignment())); |
+ |
observers_.ForAllPtrs([shelf](mash::shelf::mojom::ShelfObserver* observer) { |
observer->OnAlignmentChanged( |
static_cast<mash::shelf::mojom::Alignment>(shelf->GetAlignment())); |
@@ -151,6 +144,10 @@ void ShelfDelegateMus::OnShelfAlignmentChanged(Shelf* shelf) { |
} |
void ShelfDelegateMus::OnShelfAutoHideBehaviorChanged(Shelf* shelf) { |
+ shelf_layout_->SetAutoHideBehavior( |
+ static_cast<mash::wm::mojom::ShelfAutoHideBehavior>( |
+ shelf->auto_hide_behavior())); |
+ |
observers_.ForAllPtrs([shelf](mash::shelf::mojom::ShelfObserver* observer) { |
observer->OnAutoHideBehaviorChanged( |
static_cast<mash::shelf::mojom::AutoHideBehavior>( |
@@ -321,5 +318,21 @@ void ShelfDelegateMus::OnUserWindowFocusChanged(uint32_t window_id, |
model_->Set(index, item); |
} |
+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(); |
+ window->SetSharedProperty<gfx::Size>( |
+ mus::mojom::WindowManager::kPreferredSize_Property, size); |
+ |
+ StatusAreaWidget* status_widget = widget->status_area_widget(); |
+ mus::Window* status_window = |
+ aura::GetMusWindow(status_widget->GetNativeWindow()); |
+ gfx::Size status_size = status_widget->GetWindowBoundsInScreen().size(); |
+ status_window->SetSharedProperty<gfx::Size>( |
+ mus::mojom::WindowManager::kPreferredSize_Property, status_size); |
+} |
+ |
} // namespace sysui |
} // namespace ash |