Index: mash/wm/root_window_controller.cc |
diff --git a/mash/wm/root_window_controller.cc b/mash/wm/root_window_controller.cc |
index c0ec5b7135d845482a90642e138d0ed17e63f722..c0181591b4e05d253e6151deae2a4b0e24f45572 100644 |
--- a/mash/wm/root_window_controller.cc |
+++ b/mash/wm/root_window_controller.cc |
@@ -14,6 +14,7 @@ |
#include "components/mus/public/cpp/window_tree_host_factory.h" |
#include "mash/session/public/interfaces/session.mojom.h" |
#include "mash/wm/background_layout.h" |
+#include "mash/wm/container_ids.h" |
#include "mash/wm/fill_layout.h" |
#include "mash/wm/screenlock_layout.h" |
#include "mash/wm/shadow_controller.h" |
@@ -76,7 +77,8 @@ mus::Window* RootWindowController::GetWindowForContainer( |
bool RootWindowController::WindowIsContainer(const mus::Window* window) const { |
return window && |
- window->local_id() > ContainerToLocalId(mojom::Container::ROOT) && |
+ window->local_id() > |
+ ContainerToLocalId(mojom::Container::ROOT_CONTAINER) && |
window->local_id() < ContainerToLocalId(mojom::Container::COUNT); |
} |
@@ -97,13 +99,14 @@ void RootWindowController::OnAccelerator(uint32_t id, const ui::Event& event) { |
ShelfLayoutManager* RootWindowController::GetShelfLayoutManager() { |
return static_cast<ShelfLayoutManager*>( |
- layout_manager_[GetWindowForContainer(mojom::Container::USER_SHELF)] |
+ layout_managers_[GetWindowForContainer( |
+ mojom::Container::USER_PRIVATE_SHELF)] |
.get()); |
} |
StatusLayoutManager* RootWindowController::GetStatusLayoutManager() { |
return static_cast<StatusLayoutManager*>( |
- layout_manager_[GetWindowForContainer(mojom::Container::STATUS)].get()); |
+ layout_managers_[GetWindowForContainer(mojom::Container::STATUS)].get()); |
} |
RootWindowController::RootWindowController(WindowManagerApplication* app) |
@@ -123,33 +126,18 @@ void RootWindowController::AddAccelerators() { |
void RootWindowController::OnEmbed(mus::Window* root) { |
root_ = root; |
- root_->set_local_id(ContainerToLocalId(mojom::Container::ROOT)); |
+ root_->set_local_id(ContainerToLocalId(mojom::Container::ROOT_CONTAINER)); |
root_->AddObserver(this); |
- layout_manager_[root_].reset(new FillLayout(root_)); |
+ layout_managers_[root_].reset(new FillLayout(root_)); |
app_->OnRootWindowControllerGotRoot(this); |
CreateContainers(); |
- // Override the default layout managers for certain containers. |
- mus::Window* user_background = |
- GetWindowForContainer(mojom::Container::USER_BACKGROUND); |
- layout_manager_[user_background].reset(new BackgroundLayout(user_background)); |
- mus::Window* login_app = GetWindowForContainer(mojom::Container::LOGIN_APP); |
- layout_manager_[login_app].reset(new ScreenlockLayout(login_app)); |
- mus::Window* user_shelf = GetWindowForContainer(mojom::Container::USER_SHELF); |
- layout_manager_[user_shelf].reset(new ShelfLayoutManager(user_shelf)); |
- mus::Window* status = GetWindowForContainer(mojom::Container::STATUS); |
- layout_manager_[status].reset(new StatusLayoutManager(status)); |
- |
- mus::Window* window = GetWindowForContainer(mojom::Container::USER_WINDOWS); |
- layout_manager_[window].reset(new WindowLayout(window)); |
- window_manager_client()->AddActivationParent(window); |
- |
- // Bubble windows must be allowed to activate because some of them rely on |
- // deactivation to close. |
- mus::Window* bubbles = GetWindowForContainer(mojom::Container::BUBBLES); |
- window_manager_client()->AddActivationParent(bubbles); |
+ for (size_t i = 0; i < kNumActivationContainers; ++i) { |
+ window_manager_client()->AddActivationParent( |
+ GetWindowForContainer(kActivationContainers[i])); |
+ } |
AddAccelerators(); |
@@ -186,10 +174,11 @@ void RootWindowController::CreateContainer( |
mash::wm::mojom::Container parent_container) { |
mus::Window* window = root_->connection()->NewWindow(); |
window->set_local_id(ContainerToLocalId(container)); |
- layout_manager_[window].reset(new FillLayout(window)); |
+ layout_managers_[window].reset(new FillLayout(window)); |
+ |
// User private windows are hidden by default until the window manager learns |
// the lock state, so their contents are never accidentally revealed. |
- window->SetVisible(container != mojom::Container::USER_PRIVATE); |
+ window->SetVisible(container != mojom::Container::USER_PRIVATE_CONTAINER); |
mus::Window* parent = |
root_->GetChildByLocalId(ContainerToLocalId(parent_container)); |
parent->AddChild(window); |
@@ -197,30 +186,66 @@ void RootWindowController::CreateContainer( |
void RootWindowController::CreateContainers() { |
CreateContainer(mojom::Container::ALL_USER_BACKGROUND, |
- mojom::Container::ROOT); |
- CreateContainer(mojom::Container::USER_WORKSPACE, mojom::Container::ROOT); |
+ mojom::Container::ROOT_CONTAINER); |
+ CreateContainer(mojom::Container::USER_CONTAINER, |
+ mojom::Container::ROOT_CONTAINER); |
CreateContainer(mojom::Container::USER_BACKGROUND, |
- mojom::Container::USER_WORKSPACE); |
- CreateContainer(mojom::Container::USER_PRIVATE, |
- mojom::Container::USER_WORKSPACE); |
- CreateContainer(mojom::Container::USER_WINDOWS, |
- mojom::Container::USER_PRIVATE); |
- CreateContainer(mojom::Container::USER_ALWAYS_ON_TOP_WINDOWS, |
- mojom::Container::USER_PRIVATE); |
- CreateContainer(mojom::Container::USER_PRESENTATION_WINDOWS, |
- mojom::Container::USER_PRIVATE); |
- CreateContainer(mojom::Container::USER_SHELF, mojom::Container::USER_PRIVATE); |
- CreateContainer(mojom::Container::LOGIN_WINDOWS, mojom::Container::ROOT); |
- CreateContainer(mojom::Container::LOGIN_APP, mojom::Container::LOGIN_WINDOWS); |
+ mojom::Container::USER_CONTAINER); |
+ CreateContainer(mojom::Container::USER_PRIVATE_CONTAINER, |
+ mojom::Container::USER_CONTAINER); |
+ CreateContainer(mojom::Container::USER_PRIVATE_WINDOWS, |
+ mojom::Container::USER_PRIVATE_CONTAINER); |
+ CreateContainer(mojom::Container::USER_PRIVATE_ALWAYS_ON_TOP_WINDOWS, |
+ mojom::Container::USER_PRIVATE_CONTAINER); |
+ CreateContainer(mojom::Container::USER_PRIVATE_DOCKED_WINDOWS, |
+ mojom::Container::USER_PRIVATE_CONTAINER); |
+ CreateContainer(mojom::Container::USER_PRIVATE_PRESENTATION_WINDOWS, |
+ mojom::Container::USER_PRIVATE_CONTAINER); |
+ CreateContainer(mojom::Container::USER_PRIVATE_SHELF, |
+ mojom::Container::USER_PRIVATE_CONTAINER); |
+ CreateContainer(mojom::Container::USER_PRIVATE_PANELS, |
+ mojom::Container::USER_PRIVATE_CONTAINER); |
+ CreateContainer(mojom::Container::USER_PRIVATE_APP_LIST, |
+ mojom::Container::USER_PRIVATE_CONTAINER); |
+ CreateContainer(mojom::Container::USER_PRIVATE_SYSTEM_MODAL, |
+ mojom::Container::USER_PRIVATE_CONTAINER); |
+ CreateContainer(mojom::Container::LOGIN_CONTAINER, |
+ mojom::Container::ROOT_CONTAINER); |
+ CreateContainer(mojom::Container::LOGIN_WINDOWS, |
+ mojom::Container::LOGIN_CONTAINER); |
+ CreateContainer(mojom::Container::LOGIN_APP, |
+ mojom::Container::LOGIN_CONTAINER); |
CreateContainer(mojom::Container::LOGIN_SHELF, |
- mojom::Container::LOGIN_WINDOWS); |
- CreateContainer(mojom::Container::STATUS, mojom::Container::ROOT); |
- CreateContainer(mojom::Container::BUBBLES, mojom::Container::ROOT); |
+ mojom::Container::LOGIN_CONTAINER); |
+ CreateContainer(mojom::Container::STATUS, mojom::Container::ROOT_CONTAINER); |
+ CreateContainer(mojom::Container::BUBBLES, mojom::Container::ROOT_CONTAINER); |
CreateContainer(mojom::Container::SYSTEM_MODAL_WINDOWS, |
- mojom::Container::ROOT); |
- CreateContainer(mojom::Container::KEYBOARD, mojom::Container::ROOT); |
- CreateContainer(mojom::Container::MENUS, mojom::Container::ROOT); |
- CreateContainer(mojom::Container::TOOLTIPS, mojom::Container::ROOT); |
+ mojom::Container::ROOT_CONTAINER); |
+ CreateContainer(mojom::Container::KEYBOARD, mojom::Container::ROOT_CONTAINER); |
+ CreateContainer(mojom::Container::MENUS, mojom::Container::ROOT_CONTAINER); |
+ CreateContainer(mojom::Container::DRAG_AND_TOOLTIPS, |
+ mojom::Container::ROOT_CONTAINER); |
+ |
+ // Override the default layout managers for certain containers. |
+ mus::Window* user_background = |
+ GetWindowForContainer(mojom::Container::USER_BACKGROUND); |
+ layout_managers_[user_background].reset( |
+ new BackgroundLayout(user_background)); |
+ |
+ mus::Window* login_app = GetWindowForContainer(mojom::Container::LOGIN_APP); |
+ layout_managers_[login_app].reset(new ScreenlockLayout(login_app)); |
+ |
+ mus::Window* user_shelf = |
+ GetWindowForContainer(mojom::Container::USER_PRIVATE_SHELF); |
+ layout_managers_[user_shelf].reset(new ShelfLayoutManager(user_shelf)); |
+ |
+ mus::Window* status = GetWindowForContainer(mojom::Container::STATUS); |
+ layout_managers_[status].reset(new StatusLayoutManager(status)); |
+ |
James Cook
2016/05/13 17:14:44
Ah, this is much easier to read with newlines. Hoo
|
+ mus::Window* user_private_windows = |
+ GetWindowForContainer(mojom::Container::USER_PRIVATE_WINDOWS); |
+ layout_managers_[user_private_windows].reset( |
+ new WindowLayout(user_private_windows)); |
} |
} // namespace wm |