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

Side by Side Diff: ash/root_window_controller.cc

Issue 2350953009: Centralizes more shared code between ash and mash (Closed)
Patch Set: feedback Created 4 years, 3 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 unified diff | Download patch
« no previous file with comments | « ash/root_window_controller.h ('k') | ash/test/display_manager_test_api.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <queue> 7 #include <queue>
8 #include <vector> 8 #include <vector>
9 9
10 #include "ash/aura/aura_layout_manager_adapter.h" 10 #include "ash/aura/aura_layout_manager_adapter.h"
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 return wm_root_window_controller_->workspace_controller(); 236 return wm_root_window_controller_->workspace_controller();
237 } 237 }
238 238
239 void RootWindowController::Shutdown() { 239 void RootWindowController::Shutdown() {
240 WmShell::Get()->RemoveShellObserver(this); 240 WmShell::Get()->RemoveShellObserver(this);
241 241
242 #if defined(OS_CHROMEOS) 242 #if defined(OS_CHROMEOS)
243 touch_exploration_manager_.reset(); 243 touch_exploration_manager_.reset();
244 #endif 244 #endif
245 245
246 aura::Window* root_window = GetRootWindow(); 246 wm_root_window_controller_->ResetRootForNewWindowsIfNecessary();
247 WmWindow* root_shutting_down = WmWindowAura::Get(root_window);
248 WmShell* shell = WmShell::Get();
249 // Change the target root window before closing child windows. If any child
250 // being removed triggers a relayout of the shelf it will try to build a
251 // window list adding windows from the target root window's containers which
252 // may have already gone away.
253 if (shell->GetRootWindowForNewWindows() == root_shutting_down) {
254 // The root window for new windows is being destroyed. Switch to the primary
255 // root window if possible.
256 WmWindow* primary_root = shell->GetPrimaryRootWindow();
257 shell->set_root_window_for_new_windows(
258 primary_root == root_shutting_down ? nullptr : primary_root);
259 }
260 247
261 CloseChildWindows(); 248 CloseChildWindows();
249 aura::Window* root_window = GetRootWindow();
262 GetRootWindowSettings(root_window)->controller = NULL; 250 GetRootWindowSettings(root_window)->controller = NULL;
263 // Forget with the display ID so that display lookup 251 // Forget with the display ID so that display lookup
264 // ends up with invalid display. 252 // ends up with invalid display.
265 GetRootWindowSettings(root_window)->display_id = 253 GetRootWindowSettings(root_window)->display_id =
266 display::Display::kInvalidDisplayID; 254 display::Display::kInvalidDisplayID;
267 ash_host_->PrepareForShutdown(); 255 ash_host_->PrepareForShutdown();
268 256
269 system_wallpaper_.reset(); 257 system_wallpaper_.reset();
270 aura::client::SetScreenPositionClient(root_window, NULL); 258 aura::client::SetScreenPositionClient(root_window, NULL);
271 } 259 }
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 // TODO(jamescook): Move this into WmShelf. 317 // TODO(jamescook): Move this into WmShelf.
330 wm_shelf_aura_->shelf_widget()->SetShelfVisibility(true); 318 wm_shelf_aura_->shelf_widget()->SetShelfVisibility(true);
331 wm_shelf_aura_->shelf_widget()->status_area_widget()->Show(); 319 wm_shelf_aura_->shelf_widget()->status_area_widget()->Show();
332 } 320 }
333 321
334 void RootWindowController::CreateShelf() { 322 void RootWindowController::CreateShelf() {
335 if (wm_shelf_aura_->IsShelfInitialized()) 323 if (wm_shelf_aura_->IsShelfInitialized())
336 return; 324 return;
337 wm_shelf_aura_->InitializeShelf(); 325 wm_shelf_aura_->InitializeShelf();
338 326
339 if (panel_layout_manager_) 327 if (panel_layout_manager())
340 panel_layout_manager_->SetShelf(wm_shelf_aura_.get()); 328 panel_layout_manager()->SetShelf(wm_shelf_aura_.get());
341 if (docked_layout_manager_) { 329 if (docked_window_layout_manager()) {
342 docked_layout_manager_->SetShelf(wm_shelf_aura_.get()); 330 docked_window_layout_manager()->SetShelf(wm_shelf_aura_.get());
343 if (wm_shelf_aura_->shelf_layout_manager()) { 331 if (wm_shelf_aura_->shelf_layout_manager()) {
344 docked_layout_manager_->AddObserver( 332 docked_window_layout_manager()->AddObserver(
345 wm_shelf_aura_->shelf_layout_manager()); 333 wm_shelf_aura_->shelf_layout_manager());
346 } 334 }
347 } 335 }
348 336
349 // Notify shell observers that the shelf has been created. 337 // Notify shell observers that the shelf has been created.
350 // TODO(jamescook): Move this into WmShelf::InitializeShelf(). This will 338 // TODO(jamescook): Move this into WmShelf::InitializeShelf(). This will
351 // require changing AttachedPanelWidgetTargeter's access to WmShelf. 339 // require changing AttachedPanelWidgetTargeter's access to WmShelf.
352 WmShell::Get()->NotifyShelfCreatedForRootWindow( 340 WmShell::Get()->NotifyShelfCreatedForRootWindow(
353 WmWindowAura::Get(GetRootWindow())); 341 WmWindowAura::Get(GetRootWindow()));
354 342
(...skipping 26 matching lines...) Expand all
381 // Make sure the wallpaper is visible. 369 // Make sure the wallpaper is visible.
382 system_wallpaper_->SetColor(SK_ColorBLACK); 370 system_wallpaper_->SetColor(SK_ColorBLACK);
383 #if defined(OS_CHROMEOS) 371 #if defined(OS_CHROMEOS)
384 boot_splash_screen_.reset(); 372 boot_splash_screen_.reset();
385 #endif 373 #endif
386 } 374 }
387 375
388 void RootWindowController::CloseChildWindows() { 376 void RootWindowController::CloseChildWindows() {
389 mouse_event_target_.reset(); 377 mouse_event_target_.reset();
390 378
391 // Remove observer as deactivating keyboard causes |docked_layout_manager_| 379 // Remove observer as deactivating keyboard causes
392 // to fire notifications. 380 // docked_window_layout_manager() to fire notifications.
393 if (docked_layout_manager_ && wm_shelf_aura_->shelf_layout_manager()) { 381 if (docked_window_layout_manager() &&
394 docked_layout_manager_->RemoveObserver( 382 wm_shelf_aura_->shelf_layout_manager()) {
383 docked_window_layout_manager()->RemoveObserver(
395 wm_shelf_aura_->shelf_layout_manager()); 384 wm_shelf_aura_->shelf_layout_manager());
396 } 385 }
397 386
398 // Deactivate keyboard container before closing child windows and shutting 387 // Deactivate keyboard container before closing child windows and shutting
399 // down associated layout managers. 388 // down associated layout managers.
400 DeactivateKeyboard(keyboard::KeyboardController::GetInstance()); 389 DeactivateKeyboard(keyboard::KeyboardController::GetInstance());
401 390
402 // panel_layout_manager_ needs to be shut down before windows are destroyed. 391 wm_root_window_controller_->CloseChildWindows();
403 if (panel_layout_manager_) {
404 panel_layout_manager_->Shutdown();
405 panel_layout_manager_ = NULL;
406 }
407 // docked_layout_manager_ needs to be shut down before windows are destroyed.
408 if (docked_layout_manager_) {
409 docked_layout_manager_->Shutdown();
410 docked_layout_manager_ = NULL;
411 }
412 wm_shelf_aura_->ShutdownShelfWidget();
413 392
414 wm_root_window_controller_->DeleteWorkspaceController(); 393 aura::client::SetDragDropClient(GetRootWindow(), nullptr);
415 394 aura::client::SetTooltipClient(GetRootWindow(), nullptr);
416 // Explicitly destroy top level windows. We do this as during part of
417 // destruction such windows may query the RootWindow for state.
418 aura::Window* root_window = GetRootWindow();
419 aura::WindowTracker non_toplevel_windows;
420 non_toplevel_windows.Add(root_window);
421 while (!non_toplevel_windows.windows().empty()) {
422 const aura::Window* non_toplevel_window =
423 *non_toplevel_windows.windows().begin();
424 non_toplevel_windows.Remove(const_cast<aura::Window*>(non_toplevel_window));
425 aura::WindowTracker toplevel_windows;
426 for (size_t i = 0; i < non_toplevel_window->children().size(); ++i) {
427 aura::Window* child = non_toplevel_window->children()[i];
428 if (!child->owned_by_parent())
429 continue;
430 if (child->delegate())
431 toplevel_windows.Add(child);
432 else
433 non_toplevel_windows.Add(child);
434 }
435 while (!toplevel_windows.windows().empty())
436 delete *toplevel_windows.windows().begin();
437 }
438 // And then remove the containers.
439 while (!root_window->children().empty()) {
440 aura::Window* window = root_window->children()[0];
441 if (window->owned_by_parent()) {
442 delete window;
443 } else {
444 root_window->RemoveChild(window);
445 }
446 }
447
448 wm_shelf_aura_->DestroyShelfWidget();
449
450 // CloseChildWindows may be called twice during the shutdown of ash unittests.
451 // Avoid notifying WmShelf that the shelf has been destroyed twice.
452 if (wm_shelf_aura_->IsShelfInitialized())
453 wm_shelf_aura_->ShutdownShelf();
454
455 aura::client::SetDragDropClient(root_window, nullptr);
456 aura::client::SetTooltipClient(root_window, nullptr);
457 } 395 }
458 396
459 void RootWindowController::MoveWindowsTo(aura::Window* dst) { 397 void RootWindowController::MoveWindowsTo(aura::Window* dst) {
460 wm_root_window_controller_->MoveWindowsTo(WmWindowAura::Get(dst)); 398 wm_root_window_controller_->MoveWindowsTo(WmWindowAura::Get(dst));
461 } 399 }
462 400
463 ShelfLayoutManager* RootWindowController::GetShelfLayoutManager() { 401 ShelfLayoutManager* RootWindowController::GetShelfLayoutManager() {
464 return wm_shelf_aura_->shelf_layout_manager(); 402 return wm_shelf_aura_->shelf_layout_manager();
465 } 403 }
466 404
(...skipping 19 matching lines...) Expand all
486 } 424 }
487 425
488 void RootWindowController::ActivateKeyboard( 426 void RootWindowController::ActivateKeyboard(
489 keyboard::KeyboardController* keyboard_controller) { 427 keyboard::KeyboardController* keyboard_controller) {
490 if (!keyboard::IsKeyboardEnabled() || 428 if (!keyboard::IsKeyboardEnabled() ||
491 GetContainer(kShellWindowId_VirtualKeyboardContainer)) { 429 GetContainer(kShellWindowId_VirtualKeyboardContainer)) {
492 return; 430 return;
493 } 431 }
494 DCHECK(keyboard_controller); 432 DCHECK(keyboard_controller);
495 keyboard_controller->AddObserver(wm_shelf_aura_->shelf_layout_manager()); 433 keyboard_controller->AddObserver(wm_shelf_aura_->shelf_layout_manager());
496 keyboard_controller->AddObserver(panel_layout_manager_); 434 keyboard_controller->AddObserver(panel_layout_manager());
497 keyboard_controller->AddObserver(docked_layout_manager_); 435 keyboard_controller->AddObserver(docked_window_layout_manager());
498 keyboard_controller->AddObserver(workspace_controller()->layout_manager()); 436 keyboard_controller->AddObserver(workspace_controller()->layout_manager());
499 keyboard_controller->AddObserver( 437 keyboard_controller->AddObserver(
500 always_on_top_controller_->GetLayoutManager()); 438 wm_root_window_controller_->always_on_top_controller()
439 ->GetLayoutManager());
501 WmShell::Get()->NotifyVirtualKeyboardActivated(true); 440 WmShell::Get()->NotifyVirtualKeyboardActivated(true);
502 aura::Window* parent = GetContainer(kShellWindowId_ImeWindowParentContainer); 441 aura::Window* parent = GetContainer(kShellWindowId_ImeWindowParentContainer);
503 DCHECK(parent); 442 DCHECK(parent);
504 aura::Window* keyboard_container = keyboard_controller->GetContainerWindow(); 443 aura::Window* keyboard_container = keyboard_controller->GetContainerWindow();
505 keyboard_container->set_id(kShellWindowId_VirtualKeyboardContainer); 444 keyboard_container->set_id(kShellWindowId_VirtualKeyboardContainer);
506 parent->AddChild(keyboard_container); 445 parent->AddChild(keyboard_container);
507 } 446 }
508 447
509 void RootWindowController::DeactivateKeyboard( 448 void RootWindowController::DeactivateKeyboard(
510 keyboard::KeyboardController* keyboard_controller) { 449 keyboard::KeyboardController* keyboard_controller) {
511 if (!keyboard_controller || 450 if (!keyboard_controller ||
512 !keyboard_controller->keyboard_container_initialized()) { 451 !keyboard_controller->keyboard_container_initialized()) {
513 return; 452 return;
514 } 453 }
515 aura::Window* keyboard_container = keyboard_controller->GetContainerWindow(); 454 aura::Window* keyboard_container = keyboard_controller->GetContainerWindow();
516 if (keyboard_container->GetRootWindow() == GetRootWindow()) { 455 if (keyboard_container->GetRootWindow() == GetRootWindow()) {
517 aura::Window* parent = 456 aura::Window* parent =
518 GetContainer(kShellWindowId_ImeWindowParentContainer); 457 GetContainer(kShellWindowId_ImeWindowParentContainer);
519 DCHECK(parent); 458 DCHECK(parent);
520 parent->RemoveChild(keyboard_container); 459 parent->RemoveChild(keyboard_container);
521 // Virtual keyboard may be deactivated while still showing, notify all 460 // Virtual keyboard may be deactivated while still showing, notify all
522 // observers that keyboard bounds changed to 0 before remove them. 461 // observers that keyboard bounds changed to 0 before remove them.
523 keyboard_controller->NotifyKeyboardBoundsChanging(gfx::Rect()); 462 keyboard_controller->NotifyKeyboardBoundsChanging(gfx::Rect());
524 keyboard_controller->RemoveObserver(wm_shelf_aura_->shelf_layout_manager()); 463 keyboard_controller->RemoveObserver(wm_shelf_aura_->shelf_layout_manager());
525 keyboard_controller->RemoveObserver(panel_layout_manager_); 464 keyboard_controller->RemoveObserver(panel_layout_manager());
526 keyboard_controller->RemoveObserver(docked_layout_manager_); 465 keyboard_controller->RemoveObserver(docked_window_layout_manager());
527 keyboard_controller->RemoveObserver( 466 keyboard_controller->RemoveObserver(
528 workspace_controller()->layout_manager()); 467 workspace_controller()->layout_manager());
529 keyboard_controller->RemoveObserver( 468 keyboard_controller->RemoveObserver(
530 always_on_top_controller_->GetLayoutManager()); 469 wm_root_window_controller_->always_on_top_controller()
470 ->GetLayoutManager());
531 WmShell::Get()->NotifyVirtualKeyboardActivated(false); 471 WmShell::Get()->NotifyVirtualKeyboardActivated(false);
532 } 472 }
533 } 473 }
534 474
535 bool RootWindowController::IsVirtualKeyboardWindow(aura::Window* window) { 475 bool RootWindowController::IsVirtualKeyboardWindow(aura::Window* window) {
536 aura::Window* parent = GetContainer(kShellWindowId_ImeWindowParentContainer); 476 aura::Window* parent = GetContainer(kShellWindowId_ImeWindowParentContainer);
537 return parent ? parent->Contains(window) : false; 477 return parent ? parent->Contains(window) : false;
538 } 478 }
539 479
540 void RootWindowController::SetTouchAccessibilityAnchorPoint( 480 void RootWindowController::SetTouchAccessibilityAnchorPoint(
541 const gfx::Point& anchor_point) { 481 const gfx::Point& anchor_point) {
542 #if defined(OS_CHROMEOS) 482 #if defined(OS_CHROMEOS)
543 if (touch_exploration_manager_) 483 if (touch_exploration_manager_)
544 touch_exploration_manager_->SetTouchAccessibilityAnchorPoint(anchor_point); 484 touch_exploration_manager_->SetTouchAccessibilityAnchorPoint(anchor_point);
545 #endif // defined(OS_CHROMEOS) 485 #endif // defined(OS_CHROMEOS)
546 } 486 }
547 487
548 //////////////////////////////////////////////////////////////////////////////// 488 ////////////////////////////////////////////////////////////////////////////////
549 // RootWindowController, private: 489 // RootWindowController, private:
550 490
551 RootWindowController::RootWindowController(AshWindowTreeHost* ash_host) 491 RootWindowController::RootWindowController(AshWindowTreeHost* ash_host)
552 : ash_host_(ash_host), 492 : ash_host_(ash_host),
553 wm_shelf_aura_(new WmShelfAura), 493 wm_shelf_aura_(new WmShelfAura),
554 docked_layout_manager_(NULL),
555 panel_layout_manager_(NULL),
556 touch_hud_debug_(NULL), 494 touch_hud_debug_(NULL),
557 touch_hud_projection_(NULL) { 495 touch_hud_projection_(NULL) {
558 aura::Window* root_window = GetRootWindow(); 496 aura::Window* root_window = GetRootWindow();
559 GetRootWindowSettings(root_window)->controller = this; 497 GetRootWindowSettings(root_window)->controller = this;
560 498
561 // Has to happen after this is set as |controller| of RootWindowSettings. 499 // Has to happen after this is set as |controller| of RootWindowSettings.
562 wm_root_window_controller_ = WmRootWindowControllerAura::Get(root_window); 500 wm_root_window_controller_ = WmRootWindowControllerAura::Get(root_window);
563 501
564 stacking_controller_.reset(new StackingController); 502 stacking_controller_.reset(new StackingController);
565 aura::client::SetWindowTreeClient(root_window, stacking_controller_.get()); 503 aura::client::SetWindowTreeClient(root_window, stacking_controller_.get());
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
605 543
606 #if defined(OS_CHROMEOS) 544 #if defined(OS_CHROMEOS)
607 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( 545 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
608 switches::kAshDisableTouchExplorationMode)) { 546 switches::kAshDisableTouchExplorationMode)) {
609 touch_exploration_manager_.reset(new AshTouchExplorationManager(this)); 547 touch_exploration_manager_.reset(new AshTouchExplorationManager(this));
610 } 548 }
611 #endif 549 #endif
612 } 550 }
613 551
614 void RootWindowController::InitLayoutManagers() { 552 void RootWindowController::InitLayoutManagers() {
615 wm_root_window_controller_->CreateLayoutManagers();
616
617 aura::Window* root_window = GetRootWindow();
618
619 WmWindow* always_on_top_container =
620 WmWindowAura::Get(GetContainer(kShellWindowId_AlwaysOnTopContainer));
621 always_on_top_controller_.reset(
622 new AlwaysOnTopController(always_on_top_container));
623
624 // Create the shelf and status area widgets. 553 // Create the shelf and status area widgets.
625 DCHECK(!wm_shelf_aura_->shelf_widget()); 554 DCHECK(!wm_shelf_aura_->shelf_widget());
626 aura::Window* shelf_container = GetContainer(kShellWindowId_ShelfContainer); 555 aura::Window* shelf_container = GetContainer(kShellWindowId_ShelfContainer);
627 aura::Window* status_container = GetContainer(kShellWindowId_StatusContainer); 556 aura::Window* status_container = GetContainer(kShellWindowId_StatusContainer);
628 WmWindow* wm_shelf_container = WmWindowAura::Get(shelf_container); 557 WmWindow* wm_shelf_container = WmWindowAura::Get(shelf_container);
629 WmWindow* wm_status_container = WmWindowAura::Get(status_container); 558 WmWindow* wm_status_container = WmWindowAura::Get(status_container);
630 wm_shelf_aura_->CreateShelfWidget(WmWindowAura::Get(root_window)); 559 wm_shelf_aura_->CreateShelfWidget(WmWindowAura::Get(GetRootWindow()));
560
561 wm_root_window_controller_->CreateLayoutManagers();
631 562
632 // Make it easier to resize windows that partially overlap the shelf. Must 563 // Make it easier to resize windows that partially overlap the shelf. Must
633 // occur after the ShelfLayoutManager is constructed by ShelfWidget. 564 // occur after the ShelfLayoutManager is constructed by ShelfWidget.
634 shelf_container->SetEventTargeter(base::MakeUnique<ShelfWindowTargeter>( 565 shelf_container->SetEventTargeter(base::MakeUnique<ShelfWindowTargeter>(
635 wm_shelf_container, wm_shelf_aura_.get())); 566 wm_shelf_container, wm_shelf_aura_.get()));
636 status_container->SetEventTargeter(base::MakeUnique<ShelfWindowTargeter>( 567 status_container->SetEventTargeter(base::MakeUnique<ShelfWindowTargeter>(
637 wm_status_container, wm_shelf_aura_.get())); 568 wm_status_container, wm_shelf_aura_.get()));
638 569
639 if (!WmShell::Get() 570 if (!WmShell::Get()
640 ->GetSessionStateDelegate() 571 ->GetSessionStateDelegate()
641 ->IsActiveUserSessionStarted()) { 572 ->IsActiveUserSessionStarted()) {
642 // This window exists only to be a event target on login screen. 573 // This window exists only to be a event target on login screen.
643 // It does not have to handle events, nor be visible. 574 // It does not have to handle events, nor be visible.
644 mouse_event_target_.reset(new aura::Window(new EmptyWindowDelegate)); 575 mouse_event_target_.reset(new aura::Window(new EmptyWindowDelegate));
645 mouse_event_target_->Init(ui::LAYER_NOT_DRAWN); 576 mouse_event_target_->Init(ui::LAYER_NOT_DRAWN);
646 577
647 aura::Window* lock_wallpaper_container = 578 aura::Window* lock_wallpaper_container =
648 GetContainer(kShellWindowId_LockScreenWallpaperContainer); 579 GetContainer(kShellWindowId_LockScreenWallpaperContainer);
649 lock_wallpaper_container->AddChild(mouse_event_target_.get()); 580 lock_wallpaper_container->AddChild(mouse_event_target_.get());
650 mouse_event_target_->Show(); 581 mouse_event_target_->Show();
651 } 582 }
652 583
653 // Create Docked windows layout manager 584 panel_container_handler_ = base::MakeUnique<PanelWindowEventHandler>();
654 WmWindow* docked_container = 585 GetContainer(kShellWindowId_PanelContainer)
655 WmWindowAura::Get(GetContainer(kShellWindowId_DockedContainer)); 586 ->AddPreTargetHandler(panel_container_handler_.get());
656 docked_layout_manager_ = new DockedWindowLayoutManager(docked_container);
657 docked_container->SetLayoutManager(base::WrapUnique(docked_layout_manager_));
658
659 // Installs WmSnapLayoutManager on appropriate containers.
660 wm::WmSnapToPixelLayoutManager::InstallOnContainers(
661 WmWindowAura::Get(root_window));
662
663 // Create Panel layout manager
664 aura::Window* panel_container = GetContainer(kShellWindowId_PanelContainer);
665 WmWindow* wm_panel_container = WmWindowAura::Get(panel_container);
666 panel_layout_manager_ = new PanelLayoutManager(wm_panel_container);
667 wm_panel_container->SetLayoutManager(base::WrapUnique(panel_layout_manager_));
668 panel_container_handler_.reset(new PanelWindowEventHandler);
669 panel_container->AddPreTargetHandler(panel_container_handler_.get());
670 587
671 // Install an AttachedPanelWindowTargeter on the panel container to make it 588 // Install an AttachedPanelWindowTargeter on the panel container to make it
672 // easier to correctly target shelf buttons with touch. 589 // easier to correctly target shelf buttons with touch.
673 gfx::Insets mouse_extend(-kResizeOutsideBoundsSize, -kResizeOutsideBoundsSize, 590 gfx::Insets mouse_extend(-kResizeOutsideBoundsSize, -kResizeOutsideBoundsSize,
674 -kResizeOutsideBoundsSize, 591 -kResizeOutsideBoundsSize,
675 -kResizeOutsideBoundsSize); 592 -kResizeOutsideBoundsSize);
676 gfx::Insets touch_extend = 593 gfx::Insets touch_extend =
677 mouse_extend.Scale(kResizeOutsideBoundsScaleForTouch); 594 mouse_extend.Scale(kResizeOutsideBoundsScaleForTouch);
678 panel_container->SetEventTargeter( 595 aura::Window* panel_container = GetContainer(kShellWindowId_PanelContainer);
679 std::unique_ptr<ui::EventTargeter>(new AttachedPanelWindowTargeter( 596 panel_container->SetEventTargeter(std::unique_ptr<ui::EventTargeter>(
680 panel_container, mouse_extend, touch_extend, panel_layout_manager_))); 597 new AttachedPanelWindowTargeter(panel_container, mouse_extend,
598 touch_extend, panel_layout_manager())));
681 } 599 }
682 600
683 void RootWindowController::InitTouchHuds() { 601 void RootWindowController::InitTouchHuds() {
684 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); 602 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
685 if (command_line->HasSwitch(switches::kAshTouchHud)) 603 if (command_line->HasSwitch(switches::kAshTouchHud))
686 set_touch_hud_debug(new TouchHudDebug(GetRootWindow())); 604 set_touch_hud_debug(new TouchHudDebug(GetRootWindow()));
687 if (Shell::GetInstance()->is_touch_hud_projection_enabled()) 605 if (Shell::GetInstance()->is_touch_hud_projection_enabled())
688 EnableTouchHudProjection(); 606 EnableTouchHudProjection();
689 } 607 }
690 608
(...skipping 23 matching lines...) Expand all
714 return; 632 return;
715 set_touch_hud_projection(new TouchHudProjection(GetRootWindow())); 633 set_touch_hud_projection(new TouchHudProjection(GetRootWindow()));
716 } 634 }
717 635
718 void RootWindowController::DisableTouchHudProjection() { 636 void RootWindowController::DisableTouchHudProjection() {
719 if (!touch_hud_projection_) 637 if (!touch_hud_projection_)
720 return; 638 return;
721 touch_hud_projection_->Remove(); 639 touch_hud_projection_->Remove();
722 } 640 }
723 641
642 DockedWindowLayoutManager*
643 RootWindowController::docked_window_layout_manager() {
644 return wm_root_window_controller_->docked_window_layout_manager();
645 }
646
647 PanelLayoutManager* RootWindowController::panel_layout_manager() {
648 return wm_root_window_controller_->panel_layout_manager();
649 }
650
724 void RootWindowController::OnLoginStateChanged(LoginStatus status) { 651 void RootWindowController::OnLoginStateChanged(LoginStatus status) {
725 wm_shelf_aura_->UpdateVisibilityState(); 652 wm_shelf_aura_->UpdateVisibilityState();
726 } 653 }
727 654
728 void RootWindowController::OnTouchHudProjectionToggled(bool enabled) { 655 void RootWindowController::OnTouchHudProjectionToggled(bool enabled) {
729 if (enabled) 656 if (enabled)
730 EnableTouchHudProjection(); 657 EnableTouchHudProjection();
731 else 658 else
732 DisableTouchHudProjection(); 659 DisableTouchHudProjection();
733 } 660 }
734 661
735 RootWindowController* GetRootWindowController(const aura::Window* root_window) { 662 RootWindowController* GetRootWindowController(const aura::Window* root_window) {
736 return root_window ? GetRootWindowSettings(root_window)->controller : nullptr; 663 return root_window ? GetRootWindowSettings(root_window)->controller : nullptr;
737 } 664 }
738 665
739 } // namespace ash 666 } // namespace ash
OLDNEW
« no previous file with comments | « ash/root_window_controller.h ('k') | ash/test/display_manager_test_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698