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

Side by Side Diff: athena/wm/window_overview_mode.cc

Issue 546123002: Ensure that an activity is activated when overview mode is exited (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "athena/wm/window_overview_mode.h" 5 #include "athena/wm/window_overview_mode.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <functional> 8 #include <functional>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 SplitViewController* split_view_controller) { 86 SplitViewController* split_view_controller) {
87 window->ClearProperty(kWindowOverviewState); 87 window->ClearProperty(kWindowOverviewState);
88 88
89 ui::ScopedLayerAnimationSettings settings(window->layer()->GetAnimator()); 89 ui::ScopedLayerAnimationSettings settings(window->layer()->GetAnimator());
90 settings.SetPreemptionStrategy( 90 settings.SetPreemptionStrategy(
91 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); 91 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET);
92 settings.SetTransitionDuration(base::TimeDelta::FromMilliseconds(250)); 92 settings.SetTransitionDuration(base::TimeDelta::FromMilliseconds(250));
93 93
94 settings.AddObserver(new ui::ClosureAnimationObserver( 94 settings.AddObserver(new ui::ClosureAnimationObserver(
95 base::Bind(&HideWindowIfNotVisible, window, split_view_controller))); 95 base::Bind(&HideWindowIfNotVisible, window, split_view_controller)));
96
97 window->SetTransform(gfx::Transform()); 96 window->SetTransform(gfx::Transform());
98 97
99 // Reset the window opacity in case the user is dragging a window. 98 // Reset the window opacity in case the user is dragging a window.
100 window->layer()->SetOpacity(1.0f); 99 window->layer()->SetOpacity(1.0f);
101 100
102 wm::SetShadowType(window, wm::SHADOW_TYPE_NONE); 101 wm::SetShadowType(window, wm::SHADOW_TYPE_NONE);
103 } 102 }
104 103
105 gfx::RectF GetTransformedBounds(aura::Window* window) { 104 gfx::RectF GetTransformedBounds(aura::Window* window) {
106 gfx::Transform transform; 105 gfx::Transform transform;
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 dragged_window_->layer()->SetOpacity(1.f); 563 dragged_window_->layer()->SetOpacity(1.f);
565 dragged_window_ = NULL; 564 dragged_window_ = NULL;
566 } 565 }
567 566
568 void EndDragWindow(const ui::GestureEvent& gesture) { 567 void EndDragWindow(const ui::GestureEvent& gesture) {
569 CHECK(dragged_window_); 568 CHECK(dragged_window_);
570 CHECK(overview_toolbar_); 569 CHECK(overview_toolbar_);
571 OverviewToolbar::ActionType action = overview_toolbar_->current_action(); 570 OverviewToolbar::ActionType action = overview_toolbar_->current_action();
572 overview_toolbar_.reset(); 571 overview_toolbar_.reset();
573 if (action == OverviewToolbar::ACTION_TYPE_SPLIT) { 572 if (action == OverviewToolbar::ACTION_TYPE_SPLIT) {
574 delegate_->OnSplitViewMode(NULL, dragged_window_); 573 delegate_->OnSelectSplitViewWindow(NULL,
574 dragged_window_,
575 dragged_window_);
575 return; 576 return;
576 } 577 }
577 578
578 // If the window is dropped on one of the left/right windows in split-mode, 579 // If the window is dropped on one of the left/right windows in split-mode,
579 // then switch that window. 580 // then switch that window.
580 aura::Window* split_drop = GetSplitWindowDropTarget(gesture); 581 aura::Window* split_drop = GetSplitWindowDropTarget(gesture);
581 if (split_drop) { 582 if (split_drop) {
582 aura::Window* left = split_view_controller_->left_window(); 583 aura::Window* left = split_view_controller_->left_window();
583 aura::Window* right = split_view_controller_->right_window(); 584 aura::Window* right = split_view_controller_->right_window();
584 if (left == split_drop) 585 if (left == split_drop)
585 left = dragged_window_; 586 left = dragged_window_;
586 else 587 else
587 right = dragged_window_; 588 right = dragged_window_;
588 delegate_->OnSplitViewMode(left, right); 589 delegate_->OnSelectSplitViewWindow(left, right, dragged_window_);
589 return; 590 return;
590 } 591 }
591 592
592 if (ShouldCloseDragWindow(gesture)) 593 if (ShouldCloseDragWindow(gesture))
593 CloseDragWindow(gesture); 594 CloseDragWindow(gesture);
594 else 595 else
595 RestoreDragWindow(); 596 RestoreDragWindow();
596 } 597 }
597 598
598 void SelectWindow(aura::Window* window) { 599 void SelectWindow(aura::Window* window) {
599 if (!split_view_controller_->IsSplitViewModeActive()) { 600 if (!split_view_controller_->IsSplitViewModeActive()) {
600 delegate_->OnSelectWindow(window); 601 delegate_->OnSelectWindow(window);
601 } else { 602 } else {
602 // If the selected window is one of the left/right windows, then keep the 603 // If the selected window is one of the left/right windows, then keep the
603 // current state. 604 // current state.
604 if (window == split_view_controller_->left_window() || 605 if (window == split_view_controller_->left_window() ||
605 window == split_view_controller_->right_window()) { 606 window == split_view_controller_->right_window()) {
606 delegate_->OnSplitViewMode(split_view_controller_->left_window(), 607 delegate_->OnSelectSplitViewWindow(
607 split_view_controller_->right_window()); 608 split_view_controller_->left_window(),
609 split_view_controller_->right_window(),
610 window);
608 } else { 611 } else {
609 delegate_->OnSelectWindow(window); 612 delegate_->OnSelectWindow(window);
610 } 613 }
611 } 614 }
612 } 615 }
613 616
617 // WindowOverviewMode:
618 virtual void SelectDefaultWindow() OVERRIDE {
619 aura::Window::Windows windows = window_list_provider_->GetWindowList();
620 if (windows.empty())
621 return;
622
623 // TODO(pkotwicz): Do not select a window which is about to be deleted.
624 SelectWindow(windows.back());
625 }
626
614 // ui::EventHandler: 627 // ui::EventHandler:
615 virtual void OnMouseEvent(ui::MouseEvent* mouse) OVERRIDE { 628 virtual void OnMouseEvent(ui::MouseEvent* mouse) OVERRIDE {
616 if (mouse->type() == ui::ET_MOUSE_PRESSED) { 629 if (mouse->type() == ui::ET_MOUSE_PRESSED) {
617 aura::Window* select = SelectWindowAt(mouse); 630 aura::Window* select = SelectWindowAt(mouse);
618 if (select) { 631 if (select) {
619 mouse->SetHandled(); 632 mouse->SetHandled();
620 SelectWindow(select); 633 SelectWindow(select);
621 } 634 }
622 } else if (mouse->type() == ui::ET_MOUSEWHEEL) { 635 } else if (mouse->type() == ui::ET_MOUSEWHEEL) {
623 DoScroll(static_cast<ui::MouseWheelEvent*>(mouse)->y_offset()); 636 DoScroll(static_cast<ui::MouseWheelEvent*>(mouse)->y_offset());
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 aura::Window* container, 747 aura::Window* container,
735 const WindowListProvider* window_list_provider, 748 const WindowListProvider* window_list_provider,
736 SplitViewController* split_view_controller, 749 SplitViewController* split_view_controller,
737 WindowOverviewModeDelegate* delegate) { 750 WindowOverviewModeDelegate* delegate) {
738 return scoped_ptr<WindowOverviewMode>( 751 return scoped_ptr<WindowOverviewMode>(
739 new WindowOverviewModeImpl(container, window_list_provider, 752 new WindowOverviewModeImpl(container, window_list_provider,
740 split_view_controller, delegate)); 753 split_view_controller, delegate));
741 } 754 }
742 755
743 } // namespace athena 756 } // namespace athena
OLDNEW
« athena/wm/window_manager_impl.cc ('K') | « athena/wm/window_overview_mode.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698