| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/common/wm/dock/docked_window_layout_manager.h" | 5 #include "ash/common/wm/dock/docked_window_layout_manager.h" |
| 6 | 6 |
| 7 #include "ash/animation/animation_change_type.h" | 7 #include "ash/animation/animation_change_type.h" |
| 8 #include "ash/common/shelf/shelf_background_animator.h" | 8 #include "ash/common/shelf/shelf_background_animator.h" |
| 9 #include "ash/common/shelf/shelf_background_animator_observer.h" | 9 #include "ash/common/shelf/shelf_background_animator_observer.h" |
| 10 #include "ash/common/shelf/shelf_constants.h" | 10 #include "ash/common/shelf/shelf_constants.h" |
| 11 #include "ash/common/shelf/wm_shelf.h" | 11 #include "ash/common/shelf/wm_shelf.h" |
| 12 #include "ash/common/shelf/wm_shelf_observer.h" | 12 #include "ash/common/shelf/wm_shelf_observer.h" |
| 13 #include "ash/common/wm/overview/window_selector_controller.h" | 13 #include "ash/common/wm/overview/window_selector_controller.h" |
| 14 #include "ash/common/wm/window_animation_types.h" | 14 #include "ash/common/wm/window_animation_types.h" |
| 15 #include "ash/common/wm/window_parenting_utils.h" | 15 #include "ash/common/wm/window_parenting_utils.h" |
| 16 #include "ash/common/wm/window_resizer.h" | 16 #include "ash/common/wm/window_resizer.h" |
| 17 #include "ash/common/wm/window_state.h" | 17 #include "ash/common/wm/window_state.h" |
| 18 #include "ash/common/wm_lookup.h" | 18 #include "ash/common/wm_lookup.h" |
| 19 #include "ash/common/wm_shell.h" | 19 #include "ash/common/wm_shell.h" |
| 20 #include "ash/common/wm_window.h" | 20 #include "ash/common/wm_window.h" |
| 21 #include "ash/public/cpp/shell_window_ids.h" | 21 #include "ash/public/cpp/shell_window_ids.h" |
| 22 #include "ash/root_window_controller.h" | 22 #include "ash/root_window_controller.h" |
| 23 #include "ash/screen_util.h" |
| 24 #include "ash/wm/window_state_aura.h" |
| 23 #include "base/auto_reset.h" | 25 #include "base/auto_reset.h" |
| 24 #include "base/metrics/histogram_macros.h" | 26 #include "base/metrics/histogram_macros.h" |
| 25 #include "grit/ash_resources.h" | 27 #include "grit/ash_resources.h" |
| 26 #include "third_party/skia/include/core/SkColor.h" | 28 #include "third_party/skia/include/core/SkColor.h" |
| 27 #include "ui/base/resource/resource_bundle.h" | 29 #include "ui/base/resource/resource_bundle.h" |
| 28 #include "ui/compositor/scoped_layer_animation_settings.h" | 30 #include "ui/compositor/scoped_layer_animation_settings.h" |
| 29 #include "ui/display/display.h" | 31 #include "ui/display/display.h" |
| 30 #include "ui/display/screen.h" | 32 #include "ui/display/screen.h" |
| 31 #include "ui/views/background.h" | 33 #include "ui/views/background.h" |
| 34 #include "ui/wm/core/window_animations.h" |
| 32 | 35 |
| 33 namespace ash { | 36 namespace ash { |
| 34 | 37 |
| 35 // Minimum, maximum width of the dock area and a width of the gap | 38 // Minimum, maximum width of the dock area and a width of the gap |
| 36 // static | 39 // static |
| 37 const int DockedWindowLayoutManager::kMaxDockWidth = 360; | 40 const int DockedWindowLayoutManager::kMaxDockWidth = 360; |
| 38 // static | 41 // static |
| 39 const int DockedWindowLayoutManager::kMinDockWidth = 200; | 42 const int DockedWindowLayoutManager::kMinDockWidth = 200; |
| 40 // static | 43 // static |
| 41 const int DockedWindowLayoutManager::kMinDockGap = 2; | 44 const int DockedWindowLayoutManager::kMinDockGap = 2; |
| (...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 } | 302 } |
| 300 | 303 |
| 301 private: | 304 private: |
| 302 WmWindow* dragged_window_; | 305 WmWindow* dragged_window_; |
| 303 WmWindow* docked_container_; | 306 WmWindow* docked_container_; |
| 304 float delta_; | 307 float delta_; |
| 305 }; | 308 }; |
| 306 | 309 |
| 307 //////////////////////////////////////////////////////////////////////////////// | 310 //////////////////////////////////////////////////////////////////////////////// |
| 308 // A class that observes shelf for bounds changes. | 311 // A class that observes shelf for bounds changes. |
| 309 class DockedWindowLayoutManager::ShelfWindowObserver : public WmWindowObserver { | 312 class DockedWindowLayoutManager::ShelfWindowObserver |
| 313 : public aura::WindowObserver { |
| 310 public: | 314 public: |
| 311 explicit ShelfWindowObserver(DockedWindowLayoutManager* docked_layout_manager) | 315 explicit ShelfWindowObserver(DockedWindowLayoutManager* docked_layout_manager) |
| 312 : docked_layout_manager_(docked_layout_manager) { | 316 : docked_layout_manager_(docked_layout_manager) { |
| 313 DCHECK(docked_layout_manager_->shelf()->GetWindow()); | 317 DCHECK(docked_layout_manager_->shelf()->GetWindow()); |
| 314 docked_layout_manager_->shelf()->GetWindow()->AddObserver(this); | 318 docked_layout_manager_->shelf()->GetWindow()->aura_window()->AddObserver( |
| 319 this); |
| 315 } | 320 } |
| 316 | 321 |
| 317 ~ShelfWindowObserver() override { | 322 ~ShelfWindowObserver() override { |
| 318 if (docked_layout_manager_->shelf() && | 323 if (docked_layout_manager_->shelf() && |
| 319 docked_layout_manager_->shelf()->GetWindow()) { | 324 docked_layout_manager_->shelf()->GetWindow()) { |
| 320 docked_layout_manager_->shelf()->GetWindow()->RemoveObserver(this); | 325 docked_layout_manager_->shelf() |
| 326 ->GetWindow() |
| 327 ->aura_window() |
| 328 ->RemoveObserver(this); |
| 321 } | 329 } |
| 322 } | 330 } |
| 323 | 331 |
| 324 // WmWindowObserver: | 332 // aura::WindowObserver: |
| 325 void OnWindowBoundsChanged(WmWindow* window, | 333 void OnWindowBoundsChanged(aura::Window* window, |
| 326 const gfx::Rect& old_bounds, | 334 const gfx::Rect& old_bounds, |
| 327 const gfx::Rect& new_bounds) override { | 335 const gfx::Rect& new_bounds) override { |
| 328 shelf_bounds_in_screen_ = | 336 shelf_bounds_in_screen_ = |
| 329 window->GetParent()->ConvertRectToScreen(new_bounds); | 337 ScreenUtil::ConvertRectToScreen(window->parent(), new_bounds); |
| 330 | 338 |
| 331 // When the shelf is auto-hidden, it has an invisible height of 3px used | 339 // When the shelf is auto-hidden, it has an invisible height of 3px used |
| 332 // as a hit region which is specific to Chrome OS MD (for non-MD, the 3 | 340 // as a hit region which is specific to Chrome OS MD (for non-MD, the 3 |
| 333 // pixels are visible). In computing the work area we should consider a | 341 // pixels are visible). In computing the work area we should consider a |
| 334 // hidden shelf as having a height of 0 (for non-MD, shelf height is 3). | 342 // hidden shelf as having a height of 0 (for non-MD, shelf height is 3). |
| 335 if (docked_layout_manager_->shelf()->GetAutoHideState() == | 343 if (docked_layout_manager_->shelf()->GetAutoHideState() == |
| 336 ShelfAutoHideState::SHELF_AUTO_HIDE_HIDDEN) { | 344 ShelfAutoHideState::SHELF_AUTO_HIDE_HIDDEN) { |
| 337 shelf_bounds_in_screen_.set_height( | 345 shelf_bounds_in_screen_.set_height( |
| 338 GetShelfConstant(SHELF_INSETS_FOR_AUTO_HIDE)); | 346 GetShelfConstant(SHELF_INSETS_FOR_AUTO_HIDE)); |
| 339 } | 347 } |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 390 return static_cast<DockedWindowLayoutManager*>( | 398 return static_cast<DockedWindowLayoutManager*>( |
| 391 root->GetChildByShellWindowId(kShellWindowId_DockedContainer) | 399 root->GetChildByShellWindowId(kShellWindowId_DockedContainer) |
| 392 ->GetLayoutManager()); | 400 ->GetLayoutManager()); |
| 393 } | 401 } |
| 394 | 402 |
| 395 void DockedWindowLayoutManager::Shutdown() { | 403 void DockedWindowLayoutManager::Shutdown() { |
| 396 background_widget_.reset(); | 404 background_widget_.reset(); |
| 397 shelf_observer_.reset(); | 405 shelf_observer_.reset(); |
| 398 shelf_ = nullptr; | 406 shelf_ = nullptr; |
| 399 for (WmWindow* child : dock_container_->GetChildren()) { | 407 for (WmWindow* child : dock_container_->GetChildren()) { |
| 400 child->RemoveObserver(this); | 408 child->aura_window()->RemoveObserver(this); |
| 401 child->GetWindowState()->RemoveObserver(this); | 409 child->GetWindowState()->RemoveObserver(this); |
| 402 } | 410 } |
| 403 dock_container_->GetShell()->RemoveActivationObserver(this); | 411 dock_container_->GetShell()->RemoveActivationObserver(this); |
| 404 dock_container_->GetShell()->RemoveShellObserver(this); | 412 dock_container_->GetShell()->RemoveShellObserver(this); |
| 405 display::Screen::GetScreen()->RemoveObserver(this); | 413 display::Screen::GetScreen()->RemoveObserver(this); |
| 406 } | 414 } |
| 407 | 415 |
| 408 void DockedWindowLayoutManager::AddObserver( | 416 void DockedWindowLayoutManager::AddObserver( |
| 409 DockedWindowLayoutManagerObserver* observer) { | 417 DockedWindowLayoutManagerObserver* observer) { |
| 410 observer_list_.AddObserver(observer); | 418 observer_list_.AddObserver(observer); |
| 411 } | 419 } |
| 412 | 420 |
| 413 void DockedWindowLayoutManager::RemoveObserver( | 421 void DockedWindowLayoutManager::RemoveObserver( |
| 414 DockedWindowLayoutManagerObserver* observer) { | 422 DockedWindowLayoutManagerObserver* observer) { |
| 415 observer_list_.RemoveObserver(observer); | 423 observer_list_.RemoveObserver(observer); |
| 416 } | 424 } |
| 417 | 425 |
| 418 void DockedWindowLayoutManager::StartDragging(WmWindow* window) { | 426 void DockedWindowLayoutManager::StartDragging(WmWindow* window) { |
| 419 DCHECK(!dragged_window_); | 427 DCHECK(!dragged_window_); |
| 420 dragged_window_ = window; | 428 dragged_window_ = window; |
| 421 DCHECK(!IsPopupOrTransient(window)); | 429 DCHECK(!IsPopupOrTransient(window)); |
| 422 // Start observing a window unless it is docked container's child in which | 430 // Start observing a window unless it is docked container's child in which |
| 423 // case it is already observed. | 431 // case it is already observed. |
| 424 wm::WindowState* dragged_state = dragged_window_->GetWindowState(); | 432 wm::WindowState* dragged_state = dragged_window_->GetWindowState(); |
| 425 if (dragged_window_->GetParent() != dock_container_) { | 433 if (dragged_window_->GetParent() != dock_container_) { |
| 426 dragged_window_->AddObserver(this); | 434 dragged_window_->aura_window()->AddObserver(this); |
| 427 dragged_state->AddObserver(this); | 435 dragged_state->AddObserver(this); |
| 428 } else if (!IsAnyWindowDocked() && dragged_state->drag_details() && | 436 } else if (!IsAnyWindowDocked() && dragged_state->drag_details() && |
| 429 !(dragged_state->drag_details()->bounds_change & | 437 !(dragged_state->drag_details()->bounds_change & |
| 430 WindowResizer::kBoundsChange_Resizes)) { | 438 WindowResizer::kBoundsChange_Resizes)) { |
| 431 // If there are no other docked windows clear alignment when a docked window | 439 // If there are no other docked windows clear alignment when a docked window |
| 432 // is moved (but not when it is resized or the window could get undocked | 440 // is moved (but not when it is resized or the window could get undocked |
| 433 // when resized away from the edge while docked). | 441 // when resized away from the edge while docked). |
| 434 alignment_ = DOCKED_ALIGNMENT_NONE; | 442 alignment_ = DOCKED_ALIGNMENT_NONE; |
| 435 } | 443 } |
| 436 is_dragged_from_dock_ = window->GetParent() == dock_container_; | 444 is_dragged_from_dock_ = window->GetParent() == dock_container_; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 469 void DockedWindowLayoutManager::FinishDragging(DockedAction action, | 477 void DockedWindowLayoutManager::FinishDragging(DockedAction action, |
| 470 DockedActionSource source) { | 478 DockedActionSource source) { |
| 471 DCHECK(dragged_window_); | 479 DCHECK(dragged_window_); |
| 472 DCHECK(!IsPopupOrTransient(dragged_window_)); | 480 DCHECK(!IsPopupOrTransient(dragged_window_)); |
| 473 if (is_dragged_window_docked_) | 481 if (is_dragged_window_docked_) |
| 474 OnDraggedWindowUndocked(); | 482 OnDraggedWindowUndocked(); |
| 475 DCHECK(!is_dragged_window_docked_); | 483 DCHECK(!is_dragged_window_docked_); |
| 476 // Stop observing a window unless it is docked container's child in which | 484 // Stop observing a window unless it is docked container's child in which |
| 477 // case it needs to keep being observed after the drag completes. | 485 // case it needs to keep being observed after the drag completes. |
| 478 if (dragged_window_->GetParent() != dock_container_) { | 486 if (dragged_window_->GetParent() != dock_container_) { |
| 479 dragged_window_->RemoveObserver(this); | 487 dragged_window_->aura_window()->RemoveObserver(this); |
| 480 dragged_window_->GetWindowState()->RemoveObserver(this); | 488 dragged_window_->GetWindowState()->RemoveObserver(this); |
| 481 if (last_active_window_ == dragged_window_) | 489 if (last_active_window_ == dragged_window_) |
| 482 last_active_window_ = nullptr; | 490 last_active_window_ = nullptr; |
| 483 } else { | 491 } else { |
| 484 // If this is the first window that got docked by a move update alignment. | 492 // If this is the first window that got docked by a move update alignment. |
| 485 if (alignment_ == DOCKED_ALIGNMENT_NONE) | 493 if (alignment_ == DOCKED_ALIGNMENT_NONE) |
| 486 alignment_ = GetEdgeNearestWindow(dragged_window_); | 494 alignment_ = GetEdgeNearestWindow(dragged_window_); |
| 487 // A window is no longer dragged and is a child. | 495 // A window is no longer dragged and is a child. |
| 488 // When a window becomes a child at drag start this is | 496 // When a window becomes a child at drag start this is |
| 489 // the only opportunity we will have to enforce a window | 497 // the only opportunity we will have to enforce a window |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 638 // If this is the first window getting docked - update alignment. | 646 // If this is the first window getting docked - update alignment. |
| 639 // A window can be added without proper bounds when window is moved to another | 647 // A window can be added without proper bounds when window is moved to another |
| 640 // display via API or due to display configuration change, so the alignment | 648 // display via API or due to display configuration change, so the alignment |
| 641 // is set based on which edge is closer in the new display. | 649 // is set based on which edge is closer in the new display. |
| 642 if (alignment_ == DOCKED_ALIGNMENT_NONE) { | 650 if (alignment_ == DOCKED_ALIGNMENT_NONE) { |
| 643 alignment_ = preferred_alignment_ != DOCKED_ALIGNMENT_NONE | 651 alignment_ = preferred_alignment_ != DOCKED_ALIGNMENT_NONE |
| 644 ? preferred_alignment_ | 652 ? preferred_alignment_ |
| 645 : GetEdgeNearestWindow(child); | 653 : GetEdgeNearestWindow(child); |
| 646 } | 654 } |
| 647 MaybeMinimizeChildrenExcept(child); | 655 MaybeMinimizeChildrenExcept(child); |
| 648 child->AddObserver(this); | 656 child->aura_window()->AddObserver(this); |
| 649 child->GetWindowState()->AddObserver(this); | 657 child->GetWindowState()->AddObserver(this); |
| 650 Relayout(); | 658 Relayout(); |
| 651 UpdateDockBounds(DockedWindowLayoutManagerObserver::CHILD_CHANGED); | 659 UpdateDockBounds(DockedWindowLayoutManagerObserver::CHILD_CHANGED); |
| 652 | 660 |
| 653 // Only keyboard-initiated actions are recorded here. Dragging cases | 661 // Only keyboard-initiated actions are recorded here. Dragging cases |
| 654 // are handled in FinishDragging. | 662 // are handled in FinishDragging. |
| 655 if (event_source_ != DOCKED_ACTION_SOURCE_UNKNOWN) | 663 if (event_source_ != DOCKED_ACTION_SOURCE_UNKNOWN) |
| 656 RecordUmaAction(DOCKED_ACTION_DOCK, event_source_); | 664 RecordUmaAction(DOCKED_ACTION_DOCK, event_source_); |
| 657 } | 665 } |
| 658 | 666 |
| 659 void DockedWindowLayoutManager::OnWindowRemovedFromLayout(WmWindow* child) { | 667 void DockedWindowLayoutManager::OnWindowRemovedFromLayout(WmWindow* child) { |
| 660 if (IsPopupOrTransient(child)) | 668 if (IsPopupOrTransient(child)) |
| 661 return; | 669 return; |
| 662 // Dragged windows are stopped being observed by FinishDragging and do not | 670 // Dragged windows are stopped being observed by FinishDragging and do not |
| 663 // change alignment during the drag. They also cannot be set to be the | 671 // change alignment during the drag. They also cannot be set to be the |
| 664 // |last_active_window_|. | 672 // |last_active_window_|. |
| 665 if (child == dragged_window_) | 673 if (child == dragged_window_) |
| 666 return; | 674 return; |
| 667 // If this is the last window, set alignment and maximize the workspace. | 675 // If this is the last window, set alignment and maximize the workspace. |
| 668 if (!IsAnyWindowDocked()) { | 676 if (!IsAnyWindowDocked()) { |
| 669 alignment_ = DOCKED_ALIGNMENT_NONE; | 677 alignment_ = DOCKED_ALIGNMENT_NONE; |
| 670 UpdateDockedWidth(0); | 678 UpdateDockedWidth(0); |
| 671 } | 679 } |
| 672 if (last_active_window_ == child) | 680 if (last_active_window_ == child) |
| 673 last_active_window_ = nullptr; | 681 last_active_window_ = nullptr; |
| 674 child->RemoveObserver(this); | 682 child->aura_window()->RemoveObserver(this); |
| 675 child->GetWindowState()->RemoveObserver(this); | 683 child->GetWindowState()->RemoveObserver(this); |
| 676 Relayout(); | 684 Relayout(); |
| 677 UpdateDockBounds(DockedWindowLayoutManagerObserver::CHILD_CHANGED); | 685 UpdateDockBounds(DockedWindowLayoutManagerObserver::CHILD_CHANGED); |
| 678 } | 686 } |
| 679 | 687 |
| 680 void DockedWindowLayoutManager::OnChildWindowVisibilityChanged(WmWindow* child, | 688 void DockedWindowLayoutManager::OnChildWindowVisibilityChanged(WmWindow* child, |
| 681 bool visible) { | 689 bool visible) { |
| 682 if (IsPopupOrTransient(child)) | 690 if (IsPopupOrTransient(child)) |
| 683 return; | 691 return; |
| 684 | 692 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 752 RestoreDockedWindow(window_state); | 760 RestoreDockedWindow(window_state); |
| 753 } else if (old_type == wm::WINDOW_STATE_TYPE_MINIMIZED) { | 761 } else if (old_type == wm::WINDOW_STATE_TYPE_MINIMIZED) { |
| 754 NOTREACHED() << "Minimized window in docked layout manager"; | 762 NOTREACHED() << "Minimized window in docked layout manager"; |
| 755 } | 763 } |
| 756 } | 764 } |
| 757 | 765 |
| 758 ///////////////////////////////////////////////////////////////////////////// | 766 ///////////////////////////////////////////////////////////////////////////// |
| 759 // DockedWindowLayoutManager, WindowObserver implementation: | 767 // DockedWindowLayoutManager, WindowObserver implementation: |
| 760 | 768 |
| 761 void DockedWindowLayoutManager::OnWindowBoundsChanged( | 769 void DockedWindowLayoutManager::OnWindowBoundsChanged( |
| 762 WmWindow* window, | 770 aura::Window* window, |
| 763 const gfx::Rect& old_bounds, | 771 const gfx::Rect& old_bounds, |
| 764 const gfx::Rect& new_bounds) { | 772 const gfx::Rect& new_bounds) { |
| 765 // Only relayout if the dragged window would get docked. | 773 // Only relayout if the dragged window would get docked. |
| 766 if (window == dragged_window_ && is_dragged_window_docked_) | 774 if (WmWindow::Get(window) == dragged_window_ && is_dragged_window_docked_) |
| 767 Relayout(); | 775 Relayout(); |
| 768 } | 776 } |
| 769 | 777 |
| 770 void DockedWindowLayoutManager::OnWindowVisibilityChanging(WmWindow* window, | 778 void DockedWindowLayoutManager::OnWindowVisibilityChanging(aura::Window* window, |
| 771 bool visible) { | 779 bool visible) { |
| 772 if (IsPopupOrTransient(window)) | 780 if (IsPopupOrTransient(WmWindow::Get(window))) |
| 773 return; | 781 return; |
| 774 int animation_type = ::wm::WINDOW_VISIBILITY_ANIMATION_TYPE_DEFAULT; | 782 int animation_type = ::wm::WINDOW_VISIBILITY_ANIMATION_TYPE_DEFAULT; |
| 775 if (visible) { | 783 if (visible) { |
| 776 animation_type = ::wm::WINDOW_VISIBILITY_ANIMATION_TYPE_DROP; | 784 animation_type = ::wm::WINDOW_VISIBILITY_ANIMATION_TYPE_DROP; |
| 777 window->SetVisibilityAnimationDuration( | 785 ::wm::SetWindowVisibilityAnimationDuration( |
| 778 base::TimeDelta::FromMilliseconds(kFadeDurationMs)); | 786 window, base::TimeDelta::FromMilliseconds(kFadeDurationMs)); |
| 779 } else if (window->GetWindowState()->IsMinimized()) { | 787 } else if (wm::GetWindowState(window)->IsMinimized()) { |
| 780 animation_type = wm::WINDOW_VISIBILITY_ANIMATION_TYPE_MINIMIZE; | 788 animation_type = wm::WINDOW_VISIBILITY_ANIMATION_TYPE_MINIMIZE; |
| 781 } | 789 } |
| 782 window->SetVisibilityAnimationType(animation_type); | 790 ::wm::SetWindowVisibilityAnimationType(window, animation_type); |
| 783 } | 791 } |
| 784 | 792 |
| 785 void DockedWindowLayoutManager::OnWindowDestroying(WmWindow* window) { | 793 void DockedWindowLayoutManager::OnWindowDestroying(aura::Window* window) { |
| 786 if (dragged_window_ == window) { | 794 if (dragged_window_ == WmWindow::Get(window)) { |
| 787 FinishDragging(DOCKED_ACTION_NONE, DOCKED_ACTION_SOURCE_UNKNOWN); | 795 FinishDragging(DOCKED_ACTION_NONE, DOCKED_ACTION_SOURCE_UNKNOWN); |
| 788 DCHECK(!dragged_window_); | 796 DCHECK(!dragged_window_); |
| 789 DCHECK(!is_dragged_window_docked_); | 797 DCHECK(!is_dragged_window_docked_); |
| 790 } | 798 } |
| 791 if (window == last_active_window_) | 799 if (WmWindow::Get(window) == last_active_window_) |
| 792 last_active_window_ = nullptr; | 800 last_active_window_ = nullptr; |
| 793 RecordUmaAction(DOCKED_ACTION_CLOSE, event_source_); | 801 RecordUmaAction(DOCKED_ACTION_CLOSE, event_source_); |
| 794 } | 802 } |
| 795 | 803 |
| 796 //////////////////////////////////////////////////////////////////////////////// | 804 //////////////////////////////////////////////////////////////////////////////// |
| 797 // DockedWindowLayoutManager, WmActivationObserver implementation: | 805 // DockedWindowLayoutManager, WmActivationObserver implementation: |
| 798 | 806 |
| 799 void DockedWindowLayoutManager::OnWindowActivated(WmWindow* gained_active, | 807 void DockedWindowLayoutManager::OnWindowActivated(WmWindow* gained_active, |
| 800 WmWindow* lost_active) { | 808 WmWindow* lost_active) { |
| 801 if (gained_active && IsPopupOrTransient(gained_active)) | 809 if (gained_active && IsPopupOrTransient(gained_active)) |
| (...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1319 const gfx::Rect& keyboard_bounds) { | 1327 const gfx::Rect& keyboard_bounds) { |
| 1320 // This bounds change will have caused a change to the Shelf which does not | 1328 // This bounds change will have caused a change to the Shelf which does not |
| 1321 // propagate automatically to this class, so manually recalculate bounds. | 1329 // propagate automatically to this class, so manually recalculate bounds. |
| 1322 Relayout(); | 1330 Relayout(); |
| 1323 UpdateDockBounds(DockedWindowLayoutManagerObserver::KEYBOARD_BOUNDS_CHANGING); | 1331 UpdateDockBounds(DockedWindowLayoutManagerObserver::KEYBOARD_BOUNDS_CHANGING); |
| 1324 } | 1332 } |
| 1325 | 1333 |
| 1326 void DockedWindowLayoutManager::OnKeyboardClosed() {} | 1334 void DockedWindowLayoutManager::OnKeyboardClosed() {} |
| 1327 | 1335 |
| 1328 } // namespace ash | 1336 } // namespace ash |
| OLD | NEW |