Index: ash/mus/shelf_delegate_mus.cc |
diff --git a/ash/mus/shelf_delegate_mus.cc b/ash/mus/shelf_delegate_mus.cc |
index d023996170881886f9167c4adfee52803dce19c8..7f36abfbe5c3cc13bf46b3e4cf31ddd5dabe2351 100644 |
--- a/ash/mus/shelf_delegate_mus.cc |
+++ b/ash/mus/shelf_delegate_mus.cc |
@@ -105,6 +105,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()); |
@@ -113,19 +114,7 @@ ShelfDelegateMus::ShelfDelegateMus(ShelfModel* model) |
ShelfDelegateMus::~ShelfDelegateMus() {} |
void ShelfDelegateMus::OnShelfCreated(Shelf* shelf) { |
- ash::ShelfWidget* widget = shelf->shelf_widget(); |
- ash::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); |
- |
- ash::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) { |
@@ -133,11 +122,15 @@ void ShelfDelegateMus::OnShelfDestroyed(Shelf* shelf) { |
} |
void ShelfDelegateMus::OnShelfAlignmentChanged(Shelf* shelf) { |
- NOTIMPLEMENTED(); |
+ SetShelfPreferredSizes(shelf); |
+ shelf_layout_->SetAlignment( |
+ static_cast<mash::wm::mojom::ShelfAlignment>(shelf->GetAlignment())); |
} |
void ShelfDelegateMus::OnShelfAutoHideBehaviorChanged(Shelf* shelf) { |
- NOTIMPLEMENTED(); |
+ shelf_layout_->SetAutoHideBehavior( |
+ static_cast<mash::wm::mojom::ShelfAutoHideBehavior>( |
+ shelf->auto_hide_behavior())); |
} |
ShelfID ShelfDelegateMus::GetShelfIDForAppID(const std::string& app_id) { |
@@ -251,5 +244,21 @@ void ShelfDelegateMus::OnUserWindowFocusChanged(uint32_t window_id, |
model_->Set(index, item); |
} |
+void ShelfDelegateMus::SetShelfPreferredSizes(Shelf* shelf) { |
+ ash::ShelfWidget* widget = shelf->shelf_widget(); |
+ ash::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); |
+ |
+ ash::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 |