| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/root_window_controller.h" | 5 #include "ash/root_window_controller.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <queue> | 8 #include <queue> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "ash/ash_constants.h" | 11 #include "ash/ash_constants.h" |
| 12 #include "ash/ash_switches.h" | 12 #include "ash/ash_switches.h" |
| 13 #include "ash/ash_touch_exploration_manager_chromeos.h" | 13 #include "ash/ash_touch_exploration_manager_chromeos.h" |
| 14 #include "ash/focus_cycler.h" | 14 #include "ash/focus_cycler.h" |
| 15 #include "ash/high_contrast/high_contrast_controller.h" | 15 #include "ash/high_contrast/high_contrast_controller.h" |
| 16 #include "ash/host/ash_window_tree_host.h" | 16 #include "ash/host/ash_window_tree_host.h" |
| 17 #include "ash/login_status.h" | 17 #include "ash/login_status.h" |
| 18 #include "ash/public/cpp/config.h" | 18 #include "ash/public/cpp/config.h" |
| 19 #include "ash/public/cpp/shelf_types.h" | 19 #include "ash/public/cpp/shelf_types.h" |
| 20 #include "ash/public/cpp/shell_window_ids.h" | 20 #include "ash/public/cpp/shell_window_ids.h" |
| 21 #include "ash/root_window_settings.h" | 21 #include "ash/root_window_settings.h" |
| 22 #include "ash/screen_util.h" | 22 #include "ash/screen_util.h" |
| 23 #include "ash/session/session_controller.h" | 23 #include "ash/session/session_controller.h" |
| 24 #include "ash/shelf/shelf.h" |
| 24 #include "ash/shelf/shelf_layout_manager.h" | 25 #include "ash/shelf/shelf_layout_manager.h" |
| 25 #include "ash/shelf/shelf_widget.h" | 26 #include "ash/shelf/shelf_widget.h" |
| 26 #include "ash/shelf/shelf_window_targeter.h" | 27 #include "ash/shelf/shelf_window_targeter.h" |
| 27 #include "ash/shelf/wm_shelf.h" | |
| 28 #include "ash/shell.h" | 28 #include "ash/shell.h" |
| 29 #include "ash/shell_delegate.h" | 29 #include "ash/shell_delegate.h" |
| 30 #include "ash/shell_port.h" | 30 #include "ash/shell_port.h" |
| 31 #include "ash/system/status_area_layout_manager.h" | 31 #include "ash/system/status_area_layout_manager.h" |
| 32 #include "ash/system/status_area_widget.h" | 32 #include "ash/system/status_area_widget.h" |
| 33 #include "ash/system/tray/system_tray_delegate.h" | 33 #include "ash/system/tray/system_tray_delegate.h" |
| 34 #include "ash/touch/touch_hud_debug.h" | 34 #include "ash/touch/touch_hud_debug.h" |
| 35 #include "ash/touch/touch_hud_projection.h" | 35 #include "ash/touch/touch_hud_projection.h" |
| 36 #include "ash/touch/touch_observer_hud.h" | 36 #include "ash/touch/touch_observer_hud.h" |
| 37 #include "ash/wallpaper/wallpaper_delegate.h" | 37 #include "ash/wallpaper/wallpaper_delegate.h" |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 347 | 347 |
| 348 wm::WorkspaceWindowState RootWindowController::GetWorkspaceWindowState() { | 348 wm::WorkspaceWindowState RootWindowController::GetWorkspaceWindowState() { |
| 349 return workspace_controller_ ? workspace_controller()->GetWindowState() | 349 return workspace_controller_ ? workspace_controller()->GetWindowState() |
| 350 : wm::WORKSPACE_WINDOW_STATE_DEFAULT; | 350 : wm::WORKSPACE_WINDOW_STATE_DEFAULT; |
| 351 } | 351 } |
| 352 | 352 |
| 353 void RootWindowController::InitializeShelf() { | 353 void RootWindowController::InitializeShelf() { |
| 354 if (shelf_initialized_) | 354 if (shelf_initialized_) |
| 355 return; | 355 return; |
| 356 shelf_initialized_ = true; | 356 shelf_initialized_ = true; |
| 357 wm_shelf_->NotifyShelfInitialized(); | 357 shelf_->NotifyShelfInitialized(); |
| 358 | 358 |
| 359 // TODO(jamescook): Pass |wm_shelf_| into the constructors for these layout | 359 // TODO(jamescook): Pass |shelf_| into the constructors for these layout |
| 360 // managers. | 360 // managers. |
| 361 if (panel_layout_manager_) | 361 if (panel_layout_manager_) |
| 362 panel_layout_manager_->SetShelf(wm_shelf_.get()); | 362 panel_layout_manager_->SetShelf(shelf_.get()); |
| 363 | 363 |
| 364 // TODO(jamescook): Eliminate this. Refactor AttachedPanelWidgetTargeter's | 364 // TODO(jamescook): Eliminate this. Refactor AttachedPanelWidgetTargeter's |
| 365 // access to WmShelf. | 365 // access to Shelf. |
| 366 Shell::Get()->NotifyShelfCreatedForRootWindow(WmWindow::Get(GetRootWindow())); | 366 Shell::Get()->NotifyShelfCreatedForRootWindow(WmWindow::Get(GetRootWindow())); |
| 367 | 367 |
| 368 wm_shelf_->shelf_widget()->PostCreateShelf(); | 368 shelf_->shelf_widget()->PostCreateShelf(); |
| 369 } | 369 } |
| 370 | 370 |
| 371 ShelfLayoutManager* RootWindowController::GetShelfLayoutManager() { | 371 ShelfLayoutManager* RootWindowController::GetShelfLayoutManager() { |
| 372 return wm_shelf_->shelf_layout_manager(); | 372 return shelf_->shelf_layout_manager(); |
| 373 } | 373 } |
| 374 | 374 |
| 375 SystemModalContainerLayoutManager* | 375 SystemModalContainerLayoutManager* |
| 376 RootWindowController::GetSystemModalLayoutManager(aura::Window* window) { | 376 RootWindowController::GetSystemModalLayoutManager(aura::Window* window) { |
| 377 aura::Window* modal_container = nullptr; | 377 aura::Window* modal_container = nullptr; |
| 378 if (window) { | 378 if (window) { |
| 379 aura::Window* window_container = wm::GetContainerForWindow(window); | 379 aura::Window* window_container = wm::GetContainerForWindow(window); |
| 380 if (window_container && | 380 if (window_container && |
| 381 window_container->id() >= kShellWindowId_LockScreenContainer) { | 381 window_container->id() >= kShellWindowId_LockScreenContainer) { |
| 382 modal_container = GetContainer(kShellWindowId_LockSystemModalContainer); | 382 modal_container = GetContainer(kShellWindowId_LockSystemModalContainer); |
| 383 } else { | 383 } else { |
| 384 modal_container = GetContainer(kShellWindowId_SystemModalContainer); | 384 modal_container = GetContainer(kShellWindowId_SystemModalContainer); |
| 385 } | 385 } |
| 386 } else { | 386 } else { |
| 387 int modal_window_id = | 387 int modal_window_id = |
| 388 Shell::Get()->session_controller()->IsUserSessionBlocked() | 388 Shell::Get()->session_controller()->IsUserSessionBlocked() |
| 389 ? kShellWindowId_LockSystemModalContainer | 389 ? kShellWindowId_LockSystemModalContainer |
| 390 : kShellWindowId_SystemModalContainer; | 390 : kShellWindowId_SystemModalContainer; |
| 391 modal_container = GetContainer(modal_window_id); | 391 modal_container = GetContainer(modal_window_id); |
| 392 } | 392 } |
| 393 return modal_container ? static_cast<SystemModalContainerLayoutManager*>( | 393 return modal_container ? static_cast<SystemModalContainerLayoutManager*>( |
| 394 modal_container->layout_manager()) | 394 modal_container->layout_manager()) |
| 395 : nullptr; | 395 : nullptr; |
| 396 } | 396 } |
| 397 | 397 |
| 398 StatusAreaWidget* RootWindowController::GetStatusAreaWidget() { | 398 StatusAreaWidget* RootWindowController::GetStatusAreaWidget() { |
| 399 ShelfWidget* shelf_widget = wm_shelf_->shelf_widget(); | 399 ShelfWidget* shelf_widget = shelf_->shelf_widget(); |
| 400 return shelf_widget ? shelf_widget->status_area_widget() : nullptr; | 400 return shelf_widget ? shelf_widget->status_area_widget() : nullptr; |
| 401 } | 401 } |
| 402 | 402 |
| 403 SystemTray* RootWindowController::GetSystemTray() { | 403 SystemTray* RootWindowController::GetSystemTray() { |
| 404 // We assume in throughout the code that this will not return NULL. If code | 404 // We assume in throughout the code that this will not return NULL. If code |
| 405 // triggers this for valid reasons, it should test status_area_widget first. | 405 // triggers this for valid reasons, it should test status_area_widget first. |
| 406 CHECK(wm_shelf_->shelf_widget()->status_area_widget()); | 406 CHECK(shelf_->shelf_widget()->status_area_widget()); |
| 407 return wm_shelf_->shelf_widget()->status_area_widget()->system_tray(); | 407 return shelf_->shelf_widget()->status_area_widget()->system_tray(); |
| 408 } | 408 } |
| 409 | 409 |
| 410 bool RootWindowController::CanWindowReceiveEvents(aura::Window* window) { | 410 bool RootWindowController::CanWindowReceiveEvents(aura::Window* window) { |
| 411 if (GetRootWindow() != window->GetRootWindow()) | 411 if (GetRootWindow() != window->GetRootWindow()) |
| 412 return false; | 412 return false; |
| 413 | 413 |
| 414 // Always allow events to fall through to the virtual keyboard even if | 414 // Always allow events to fall through to the virtual keyboard even if |
| 415 // displaying a system modal dialog. | 415 // displaying a system modal dialog. |
| 416 if (IsVirtualKeyboardWindow(window)) | 416 if (IsVirtualKeyboardWindow(window)) |
| 417 return true; | 417 return true; |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 550 // Deactivate keyboard container before closing child windows and shutting | 550 // Deactivate keyboard container before closing child windows and shutting |
| 551 // down associated layout managers. | 551 // down associated layout managers. |
| 552 DeactivateKeyboard(keyboard::KeyboardController::GetInstance()); | 552 DeactivateKeyboard(keyboard::KeyboardController::GetInstance()); |
| 553 | 553 |
| 554 // |panel_layout_manager_| needs to be shut down before windows are destroyed. | 554 // |panel_layout_manager_| needs to be shut down before windows are destroyed. |
| 555 if (panel_layout_manager_) { | 555 if (panel_layout_manager_) { |
| 556 panel_layout_manager_->Shutdown(); | 556 panel_layout_manager_->Shutdown(); |
| 557 panel_layout_manager_ = nullptr; | 557 panel_layout_manager_ = nullptr; |
| 558 } | 558 } |
| 559 | 559 |
| 560 WmShelf* shelf = GetShelf(); | 560 Shelf* shelf = GetShelf(); |
| 561 shelf->ShutdownShelfWidget(); | 561 shelf->ShutdownShelfWidget(); |
| 562 | 562 |
| 563 workspace_controller_.reset(); | 563 workspace_controller_.reset(); |
| 564 | 564 |
| 565 // Explicitly destroy top level windows. We do this because such windows may | 565 // Explicitly destroy top level windows. We do this because such windows may |
| 566 // query the RootWindow for state. | 566 // query the RootWindow for state. |
| 567 aura::WindowTracker non_toplevel_windows; | 567 aura::WindowTracker non_toplevel_windows; |
| 568 WmWindow* root = GetWindow(); | 568 WmWindow* root = GetWindow(); |
| 569 non_toplevel_windows.Add(root->aura_window()); | 569 non_toplevel_windows.Add(root->aura_window()); |
| 570 while (!non_toplevel_windows.windows().empty()) { | 570 while (!non_toplevel_windows.windows().empty()) { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 596 aura::client::SetTooltipClient(GetRootWindow(), nullptr); | 596 aura::client::SetTooltipClient(GetRootWindow(), nullptr); |
| 597 } | 597 } |
| 598 | 598 |
| 599 void RootWindowController::MoveWindowsTo(aura::Window* dst) { | 599 void RootWindowController::MoveWindowsTo(aura::Window* dst) { |
| 600 // Clear the workspace controller, so it doesn't incorrectly update the shelf. | 600 // Clear the workspace controller, so it doesn't incorrectly update the shelf. |
| 601 workspace_controller_.reset(); | 601 workspace_controller_.reset(); |
| 602 ReparentAllWindows(GetRootWindow(), dst); | 602 ReparentAllWindows(GetRootWindow(), dst); |
| 603 } | 603 } |
| 604 | 604 |
| 605 void RootWindowController::UpdateShelfVisibility() { | 605 void RootWindowController::UpdateShelfVisibility() { |
| 606 wm_shelf_->UpdateVisibilityState(); | 606 shelf_->UpdateVisibilityState(); |
| 607 } | 607 } |
| 608 | 608 |
| 609 void RootWindowController::InitTouchHuds() { | 609 void RootWindowController::InitTouchHuds() { |
| 610 if (Shell::GetAshConfig() == Config::MASH) | 610 if (Shell::GetAshConfig() == Config::MASH) |
| 611 return; | 611 return; |
| 612 | 612 |
| 613 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | 613 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
| 614 if (command_line->HasSwitch(switches::kAshTouchHud)) | 614 if (command_line->HasSwitch(switches::kAshTouchHud)) |
| 615 set_touch_hud_debug(new TouchHudDebug(GetRootWindow())); | 615 set_touch_hud_debug(new TouchHudDebug(GetRootWindow())); |
| 616 if (Shell::Get()->is_touch_hud_projection_enabled()) | 616 if (Shell::Get()->is_touch_hud_projection_enabled()) |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 664 void RootWindowController::SetTouchAccessibilityAnchorPoint( | 664 void RootWindowController::SetTouchAccessibilityAnchorPoint( |
| 665 const gfx::Point& anchor_point) { | 665 const gfx::Point& anchor_point) { |
| 666 if (touch_exploration_manager_) | 666 if (touch_exploration_manager_) |
| 667 touch_exploration_manager_->SetTouchAccessibilityAnchorPoint(anchor_point); | 667 touch_exploration_manager_->SetTouchAccessibilityAnchorPoint(anchor_point); |
| 668 } | 668 } |
| 669 | 669 |
| 670 void RootWindowController::ShowContextMenu(const gfx::Point& location_in_screen, | 670 void RootWindowController::ShowContextMenu(const gfx::Point& location_in_screen, |
| 671 ui::MenuSourceType source_type) { | 671 ui::MenuSourceType source_type) { |
| 672 ShellDelegate* delegate = Shell::Get()->shell_delegate(); | 672 ShellDelegate* delegate = Shell::Get()->shell_delegate(); |
| 673 DCHECK(delegate); | 673 DCHECK(delegate); |
| 674 menu_model_.reset(delegate->CreateContextMenu(wm_shelf_.get(), nullptr)); | 674 menu_model_.reset(delegate->CreateContextMenu(shelf_.get(), nullptr)); |
| 675 if (!menu_model_) | 675 if (!menu_model_) |
| 676 return; | 676 return; |
| 677 | 677 |
| 678 menu_model_adapter_ = base::MakeUnique<views::MenuModelAdapter>( | 678 menu_model_adapter_ = base::MakeUnique<views::MenuModelAdapter>( |
| 679 menu_model_.get(), | 679 menu_model_.get(), |
| 680 base::Bind(&RootWindowController::OnMenuClosed, base::Unretained(this))); | 680 base::Bind(&RootWindowController::OnMenuClosed, base::Unretained(this))); |
| 681 | 681 |
| 682 // The wallpaper controller may not be set yet if the user clicked on the | 682 // The wallpaper controller may not be set yet if the user clicked on the |
| 683 // status area before the initial animation completion. See crbug.com/222218 | 683 // status area before the initial animation completion. See crbug.com/222218 |
| 684 if (!wallpaper_widget_controller()) | 684 if (!wallpaper_widget_controller()) |
| 685 return; | 685 return; |
| 686 | 686 |
| 687 menu_runner_ = base::MakeUnique<views::MenuRunner>( | 687 menu_runner_ = base::MakeUnique<views::MenuRunner>( |
| 688 menu_model_adapter_->CreateMenu(), views::MenuRunner::CONTEXT_MENU); | 688 menu_model_adapter_->CreateMenu(), views::MenuRunner::CONTEXT_MENU); |
| 689 menu_runner_->RunMenuAt(wallpaper_widget_controller()->widget(), nullptr, | 689 menu_runner_->RunMenuAt(wallpaper_widget_controller()->widget(), nullptr, |
| 690 gfx::Rect(location_in_screen, gfx::Size()), | 690 gfx::Rect(location_in_screen, gfx::Size()), |
| 691 views::MENU_ANCHOR_TOPLEFT, source_type); | 691 views::MENU_ANCHOR_TOPLEFT, source_type); |
| 692 } | 692 } |
| 693 | 693 |
| 694 void RootWindowController::UpdateAfterLoginStatusChange(LoginStatus status) { | 694 void RootWindowController::UpdateAfterLoginStatusChange(LoginStatus status) { |
| 695 StatusAreaWidget* status_area_widget = | 695 StatusAreaWidget* status_area_widget = |
| 696 wm_shelf_->shelf_widget()->status_area_widget(); | 696 shelf_->shelf_widget()->status_area_widget(); |
| 697 if (status_area_widget) | 697 if (status_area_widget) |
| 698 status_area_widget->UpdateAfterLoginStatusChange(status); | 698 status_area_widget->UpdateAfterLoginStatusChange(status); |
| 699 } | 699 } |
| 700 | 700 |
| 701 //////////////////////////////////////////////////////////////////////////////// | 701 //////////////////////////////////////////////////////////////////////////////// |
| 702 // RootWindowController, private: | 702 // RootWindowController, private: |
| 703 | 703 |
| 704 RootWindowController::RootWindowController( | 704 RootWindowController::RootWindowController( |
| 705 AshWindowTreeHost* ash_host, | 705 AshWindowTreeHost* ash_host, |
| 706 aura::WindowTreeHost* window_tree_host) | 706 aura::WindowTreeHost* window_tree_host) |
| 707 : ash_host_(ash_host), | 707 : ash_host_(ash_host), |
| 708 mus_window_tree_host_(window_tree_host), | 708 mus_window_tree_host_(window_tree_host), |
| 709 window_tree_host_(ash_host ? ash_host->AsWindowTreeHost() | 709 window_tree_host_(ash_host ? ash_host->AsWindowTreeHost() |
| 710 : window_tree_host), | 710 : window_tree_host), |
| 711 wm_shelf_(base::MakeUnique<WmShelf>()) { | 711 shelf_(base::MakeUnique<Shelf>()) { |
| 712 DCHECK((ash_host && !window_tree_host) || (!ash_host && window_tree_host)); | 712 DCHECK((ash_host && !window_tree_host) || (!ash_host && window_tree_host)); |
| 713 | 713 |
| 714 if (!root_window_controllers_) | 714 if (!root_window_controllers_) |
| 715 root_window_controllers_ = new std::vector<RootWindowController*>; | 715 root_window_controllers_ = new std::vector<RootWindowController*>; |
| 716 root_window_controllers_->push_back(this); | 716 root_window_controllers_->push_back(this); |
| 717 | 717 |
| 718 aura::Window* root_window = GetRootWindow(); | 718 aura::Window* root_window = GetRootWindow(); |
| 719 GetRootWindowSettings(root_window)->controller = this; | 719 GetRootWindowSettings(root_window)->controller = this; |
| 720 | 720 |
| 721 stacking_controller_.reset(new StackingController); | 721 stacking_controller_.reset(new StackingController); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 764 // http://crbug.com/679782 | 764 // http://crbug.com/679782 |
| 765 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( | 765 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 766 switches::kAshDisableTouchExplorationMode) && | 766 switches::kAshDisableTouchExplorationMode) && |
| 767 Shell::GetAshConfig() != Config::MASH) { | 767 Shell::GetAshConfig() != Config::MASH) { |
| 768 touch_exploration_manager_.reset(new AshTouchExplorationManager(this)); | 768 touch_exploration_manager_.reset(new AshTouchExplorationManager(this)); |
| 769 } | 769 } |
| 770 } | 770 } |
| 771 | 771 |
| 772 void RootWindowController::InitLayoutManagers() { | 772 void RootWindowController::InitLayoutManagers() { |
| 773 // Create the shelf and status area widgets. | 773 // Create the shelf and status area widgets. |
| 774 DCHECK(!wm_shelf_->shelf_widget()); | 774 DCHECK(!shelf_->shelf_widget()); |
| 775 GetShelf()->CreateShelfWidget(GetWindow()); | 775 GetShelf()->CreateShelfWidget(GetWindow()); |
| 776 | 776 |
| 777 aura::Window* root = GetRootWindow(); | 777 aura::Window* root = GetRootWindow(); |
| 778 root_window_layout_manager_ = new wm::RootWindowLayoutManager(root); | 778 root_window_layout_manager_ = new wm::RootWindowLayoutManager(root); |
| 779 root->SetLayoutManager(root_window_layout_manager_); | 779 root->SetLayoutManager(root_window_layout_manager_); |
| 780 | 780 |
| 781 aura::Window* default_container = | 781 aura::Window* default_container = |
| 782 GetContainer(kShellWindowId_DefaultContainer); | 782 GetContainer(kShellWindowId_DefaultContainer); |
| 783 // Installs WorkspaceLayoutManager on |default_container|. | 783 // Installs WorkspaceLayoutManager on |default_container|. |
| 784 workspace_controller_.reset(new WorkspaceController(default_container)); | 784 workspace_controller_.reset(new WorkspaceController(default_container)); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 808 // Create Panel layout manager | 808 // Create Panel layout manager |
| 809 aura::Window* panel_container = GetContainer(kShellWindowId_PanelContainer); | 809 aura::Window* panel_container = GetContainer(kShellWindowId_PanelContainer); |
| 810 panel_layout_manager_ = new PanelLayoutManager(panel_container); | 810 panel_layout_manager_ = new PanelLayoutManager(panel_container); |
| 811 panel_container->SetLayoutManager(panel_layout_manager_); | 811 panel_container->SetLayoutManager(panel_layout_manager_); |
| 812 | 812 |
| 813 wm::WmSnapToPixelLayoutManager::InstallOnContainers(root); | 813 wm::WmSnapToPixelLayoutManager::InstallOnContainers(root); |
| 814 | 814 |
| 815 // Make it easier to resize windows that partially overlap the shelf. Must | 815 // Make it easier to resize windows that partially overlap the shelf. Must |
| 816 // occur after the ShelfLayoutManager is constructed by ShelfWidget. | 816 // occur after the ShelfLayoutManager is constructed by ShelfWidget. |
| 817 aura::Window* shelf_container = GetContainer(kShellWindowId_ShelfContainer); | 817 aura::Window* shelf_container = GetContainer(kShellWindowId_ShelfContainer); |
| 818 WmWindow* wm_shelf_container = WmWindow::Get(shelf_container); | |
| 819 shelf_container->SetEventTargeter(base::MakeUnique<ShelfWindowTargeter>( | 818 shelf_container->SetEventTargeter(base::MakeUnique<ShelfWindowTargeter>( |
| 820 wm_shelf_container, wm_shelf_.get())); | 819 WmWindow::Get(shelf_container), shelf_.get())); |
| 821 aura::Window* status_container = GetContainer(kShellWindowId_StatusContainer); | 820 aura::Window* status_container = GetContainer(kShellWindowId_StatusContainer); |
| 822 WmWindow* wm_status_container = WmWindow::Get(status_container); | |
| 823 status_container->SetEventTargeter(base::MakeUnique<ShelfWindowTargeter>( | 821 status_container->SetEventTargeter(base::MakeUnique<ShelfWindowTargeter>( |
| 824 wm_status_container, wm_shelf_.get())); | 822 WmWindow::Get(status_container), shelf_.get())); |
| 825 | 823 |
| 826 panel_container_handler_ = base::MakeUnique<PanelWindowEventHandler>(); | 824 panel_container_handler_ = base::MakeUnique<PanelWindowEventHandler>(); |
| 827 GetContainer(kShellWindowId_PanelContainer) | 825 GetContainer(kShellWindowId_PanelContainer) |
| 828 ->AddPreTargetHandler(panel_container_handler_.get()); | 826 ->AddPreTargetHandler(panel_container_handler_.get()); |
| 829 | 827 |
| 830 // Install an AttachedPanelWindowTargeter on the panel container to make it | 828 // Install an AttachedPanelWindowTargeter on the panel container to make it |
| 831 // easier to correctly target shelf buttons with touch. | 829 // easier to correctly target shelf buttons with touch. |
| 832 gfx::Insets mouse_extend(-kResizeOutsideBoundsSize, -kResizeOutsideBoundsSize, | 830 gfx::Insets mouse_extend(-kResizeOutsideBoundsSize, -kResizeOutsideBoundsSize, |
| 833 -kResizeOutsideBoundsSize, | 831 -kResizeOutsideBoundsSize, |
| 834 -kResizeOutsideBoundsSize); | 832 -kResizeOutsideBoundsSize); |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1066 aura::Window* primary_root = Shell::GetPrimaryRootWindow(); | 1064 aura::Window* primary_root = Shell::GetPrimaryRootWindow(); |
| 1067 Shell::Get()->set_root_window_for_new_windows( | 1065 Shell::Get()->set_root_window_for_new_windows( |
| 1068 primary_root == root ? nullptr : primary_root); | 1066 primary_root == root ? nullptr : primary_root); |
| 1069 } | 1067 } |
| 1070 } | 1068 } |
| 1071 | 1069 |
| 1072 void RootWindowController::OnMenuClosed() { | 1070 void RootWindowController::OnMenuClosed() { |
| 1073 menu_runner_.reset(); | 1071 menu_runner_.reset(); |
| 1074 menu_model_adapter_.reset(); | 1072 menu_model_adapter_.reset(); |
| 1075 menu_model_.reset(); | 1073 menu_model_.reset(); |
| 1076 wm_shelf_->UpdateVisibilityState(); | 1074 shelf_->UpdateVisibilityState(); |
| 1077 } | 1075 } |
| 1078 | 1076 |
| 1079 void RootWindowController::OnTouchHudProjectionToggled(bool enabled) { | 1077 void RootWindowController::OnTouchHudProjectionToggled(bool enabled) { |
| 1080 if (enabled) | 1078 if (enabled) |
| 1081 EnableTouchHudProjection(); | 1079 EnableTouchHudProjection(); |
| 1082 else | 1080 else |
| 1083 DisableTouchHudProjection(); | 1081 DisableTouchHudProjection(); |
| 1084 } | 1082 } |
| 1085 | 1083 |
| 1086 RootWindowController* GetRootWindowController(const aura::Window* root_window) { | 1084 RootWindowController* GetRootWindowController(const aura::Window* root_window) { |
| 1087 return root_window ? GetRootWindowSettings(root_window)->controller : nullptr; | 1085 return root_window ? GetRootWindowSettings(root_window)->controller : nullptr; |
| 1088 } | 1086 } |
| 1089 | 1087 |
| 1090 } // namespace ash | 1088 } // namespace ash |
| OLD | NEW |