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

Unified Diff: athena/wm/window_manager_impl.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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « athena/wm/window_manager_impl.h ('k') | athena/wm/window_manager_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: athena/wm/window_manager_impl.cc
diff --git a/athena/wm/window_manager_impl.cc b/athena/wm/window_manager_impl.cc
index bd93b2350cbca65bc48af2ab0addf40162dae5b7..ecf5bcc820ab11262d3d5a8f8175a752da560113 100644
--- a/athena/wm/window_manager_impl.cc
+++ b/athena/wm/window_manager_impl.cc
@@ -193,7 +193,11 @@ void WindowManagerImpl::SetInOverview(bool active) {
container_.get(), window_list_provider_.get(),
split_view_controller_.get(), this);
} else {
- overview_.reset();
+ // Deleting the WindowOverviewMode object may call back to SetInOverview().
+ // Clear |overview_| first, then delete the object.
+ WindowOverviewMode* to_delete = overview_.release();
+ delete to_delete;
+
FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnOverviewModeExit());
}
}
@@ -221,13 +225,29 @@ void WindowManagerImpl::ToggleSplitViewForTest() {
ToggleSplitview();
}
-void WindowManagerImpl::OnSelectWindow(aura::Window* window) {
+void WindowManagerImpl::OnSelectWindow(aura::Window* window,
+ SplitType split_type) {
+ SetInOverview(false);
+ window->layer()->SetOpacity(1.0f);
+ window->Show();
+ wm::ActivateWindow(window);
+
+ if (split_type != SPLIT_NONE) {
+ FOR_EACH_OBSERVER(WindowManagerObserver,
+ observers_,
+ OnSplitViewModeEnter());
+ if (split_type == SPLIT_LEFT)
+ split_view_controller_->ActivateSplitMode(window, NULL);
+ else
+ split_view_controller_->ActivateSplitMode(NULL, window);
+ return;
+ }
+
if (split_view_controller_->IsSplitViewModeActive()) {
split_view_controller_->DeactivateSplitMode();
pkotwicz 2014/09/05 22:02:07 This ends up hiding the windows in split view imme
FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnSplitViewModeExit());
}
- wm::ActivateWindow(window);
- SetInOverview(false);
+
// If |window| does not have the size of the work-area, then make sure it is
// resized.
const gfx::Size work_area =
@@ -240,7 +260,6 @@ void WindowManagerImpl::OnSelectWindow(aura::Window* window) {
desired_bounds.y() - window_bounds.y());
transform.Scale(desired_bounds.width() / window_bounds.width(),
desired_bounds.height() / window_bounds.height());
- window->layer()->GetAnimator()->AbortAllAnimations();
ui::ScopedLayerAnimationSettings settings(window->layer()->GetAnimator());
settings.SetPreemptionStrategy(
ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET);
@@ -253,13 +272,6 @@ void WindowManagerImpl::OnSelectWindow(aura::Window* window) {
}
}
-void WindowManagerImpl::OnSplitViewMode(aura::Window* left,
- aura::Window* right) {
- SetInOverview(false);
- FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnSplitViewModeEnter());
- split_view_controller_->ActivateSplitMode(left, right);
-}
-
void WindowManagerImpl::OnWindowAdded(aura::Window* new_window) {
// TODO(oshima): Creating a new window should updates the ovewview mode
// instead of exitting.
« no previous file with comments | « athena/wm/window_manager_impl.h ('k') | athena/wm/window_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698