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

Unified Diff: ash/root_window_controller.cc

Issue 13896026: Stick windows to sides of workspaces (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Dock with zero width (no logs) Created 7 years, 6 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/root_window_controller.cc
diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc
index 0e3b45245fb63ab679e1e545904c039016341778..3b99a7039b6502457a247300b99e7097b66b5cdb 100644
--- a/ash/root_window_controller.cc
+++ b/ash/root_window_controller.cc
@@ -25,6 +25,7 @@
#include "ash/touch/touch_observer_hud.h"
#include "ash/wm/base_layout_manager.h"
#include "ash/wm/boot_splash_screen.h"
+#include "ash/wm/dock/dock_layout_manager.h"
#include "ash/wm/panels/panel_layout_manager.h"
#include "ash/wm/property_util.h"
#include "ash/wm/root_window_layout_manager.h"
@@ -111,6 +112,7 @@ void ReparentAllWindows(aura::RootWindow* src, aura::RootWindow* dst) {
// Set of windows to move.
const int kContainerIdsToMove[] = {
internal::kShellWindowId_DefaultContainer,
+ internal::kShellWindowId_DockContainer,
internal::kShellWindowId_PanelContainer,
internal::kShellWindowId_AlwaysOnTopContainer,
internal::kShellWindowId_SystemModalContainer,
@@ -167,6 +169,7 @@ RootWindowController::RootWindowController(aura::RootWindow* root_window)
: root_window_(root_window),
root_window_layout_(NULL),
shelf_(NULL),
+ dock_layout_manager_(NULL),
panel_layout_manager_(NULL),
touch_observer_hud_(NULL) {
SetRootWindowController(root_window, this);
@@ -272,6 +275,15 @@ void RootWindowController::InitForPrimaryDisplay() {
shelf_.reset(new ash::ShelfWidget(
shelf_container, status_container, workspace_controller()));
+ // Create Dock layout manager
+ aura::Window* dock_container = GetContainer(
+ internal::kShellWindowId_DockContainer);
+ dock_layout_manager_ =
+ new internal::DockLayoutManager(dock_container);
+ dock_container_handler_.reset(
+ new ToplevelWindowEventHandler(dock_container));
+ dock_container->SetLayoutManager(dock_layout_manager_);
+
// Create Panel layout manager
aura::Window* panel_container = GetContainer(
internal::kShellWindowId_PanelContainer);
@@ -322,6 +334,8 @@ void RootWindowController::CreateSystemBackground(
void RootWindowController::OnLauncherCreated() {
if (panel_layout_manager_)
panel_layout_manager_->SetLauncher(shelf_->launcher());
+ if (dock_layout_manager_)
+ dock_layout_manager_->SetLauncher(shelf_->launcher());
}
void RootWindowController::ShowLauncher() {
@@ -366,6 +380,10 @@ void RootWindowController::CloseChildWindows() {
panel_layout_manager_->Shutdown();
panel_layout_manager_ = NULL;
}
+ if (dock_layout_manager_) {
+ dock_layout_manager_->Shutdown();
+ dock_layout_manager_ = NULL;
+ }
// TODO(harrym): Remove when Status Area Widget is a child view.
if (shelf_)
@@ -533,6 +551,12 @@ void RootWindowController::CreateContainersInRootWindow(
always_on_top_container);
SetUsesScreenCoordinates(always_on_top_container);
+ aura::Window* dock_container = CreateContainer(
+ kShellWindowId_DockContainer,
+ "DockContainer",
+ non_lock_screen_containers);
+ SetUsesScreenCoordinates(dock_container);
+
aura::Window* panel_container = CreateContainer(
kShellWindowId_PanelContainer,
"PanelContainer",
« no previous file with comments | « ash/root_window_controller.h ('k') | ash/shell_window_ids.h » ('j') | ash/shell_window_ids.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698