Index: ash/mus/shelf_delegate_mus.cc |
diff --git a/ash/mus/shelf_delegate_mus.cc b/ash/mus/shelf_delegate_mus.cc |
index 2dc106efdb9d3e2a534a6a64134993355fc4bd5d..3e53ad8764cf500c710bfe919e1b80fa3c04e615 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) { |
::shell::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,18 +133,27 @@ void ShelfDelegateMus::OnShelfDestroyed(Shelf* shelf) { |
} |
void ShelfDelegateMus::OnShelfAlignmentChanged(Shelf* shelf) { |
- observers_.ForAllPtrs([shelf](mash::shelf::mojom::ShelfObserver* observer) { |
- observer->OnAlignmentChanged( |
- static_cast<mash::shelf::mojom::Alignment>(shelf->GetAlignment())); |
- }); |
+ SetShelfPreferredSizes(shelf); |
+ mash::shelf::mojom::Alignment alignment = |
+ static_cast<mash::shelf::mojom::Alignment>(shelf->GetAlignment()); |
+ shelf_layout_->SetAlignment(alignment); |
+ |
+ observers_.ForAllPtrs( |
+ [alignment](mash::shelf::mojom::ShelfObserver* observer) { |
+ observer->OnAlignmentChanged(alignment); |
+ }); |
} |
void ShelfDelegateMus::OnShelfAutoHideBehaviorChanged(Shelf* shelf) { |
- observers_.ForAllPtrs([shelf](mash::shelf::mojom::ShelfObserver* observer) { |
- observer->OnAutoHideBehaviorChanged( |
- static_cast<mash::shelf::mojom::AutoHideBehavior>( |
- shelf->auto_hide_behavior())); |
- }); |
+ mash::shelf::mojom::AutoHideBehavior behavior = |
+ static_cast<mash::shelf::mojom::AutoHideBehavior>( |
+ shelf->auto_hide_behavior()); |
+ shelf_layout_->SetAutoHideBehavior(behavior); |
+ |
+ observers_.ForAllPtrs( |
+ [behavior](mash::shelf::mojom::ShelfObserver* observer) { |
+ observer->OnAutoHideBehaviorChanged(behavior); |
+ }); |
} |
ShelfID ShelfDelegateMus::GetShelfIDForAppID(const std::string& app_id) { |
@@ -321,5 +319,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 |