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..3b15cd3eeb9479fd7720292bbf1c5008e97afde4 100644 |
--- a/athena/wm/window_manager_impl.cc |
+++ b/athena/wm/window_manager_impl.cc |
@@ -102,6 +102,8 @@ void AthenaContainerLayoutManager::OnWindowAddedToLayout(aura::Window* child) { |
if (std::find(list.begin(), list.end(), child) == list.end()) |
return; |
if (instance->split_view_controller_->IsSplitViewModeActive()) { |
+ child->Show(); |
+ wm::ActivateWindow(child); |
instance->split_view_controller_->ReplaceWindow( |
instance->split_view_controller_->left_window(), child); |
} else { |
@@ -174,6 +176,27 @@ bool WindowManagerImpl::IsOverviewModeActive() { |
return overview_; |
} |
+void WindowManagerImpl::ToggleSplitView() { |
+ // TODO(oshima): Figure out what to do. |
+ if (IsOverviewModeActive()) |
+ return; |
+ |
+ if (split_view_controller_->IsSplitViewModeActive()) { |
+ split_view_controller_->DeactivateSplitMode(); |
+ FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnSplitViewModeExit()); |
+ // Relayout so that windows are maximzied. |
+ container_->layout_manager()->OnWindowResized(); |
+ } else if (window_list_provider_->GetWindowList().size() > 1) { |
+ FOR_EACH_OBSERVER(WindowManagerObserver, |
+ observers_, |
+ OnSplitViewModeEnter()); |
+ aura::Window* active_window = |
+ window_list_provider_->GetWindowList().back(); |
+ wm::ActivateWindow(active_window); |
+ split_view_controller_->ActivateSplitMode(active_window, NULL); |
+ } |
+} |
+ |
void WindowManagerImpl::SetInOverview(bool active) { |
bool in_overview = !!overview_; |
if (active == in_overview) |
@@ -218,7 +241,7 @@ void WindowManagerImpl::RemoveObserver(WindowManagerObserver* observer) { |
} |
void WindowManagerImpl::ToggleSplitViewForTest() { |
- ToggleSplitview(); |
+ ToggleSplitView(); |
} |
void WindowManagerImpl::OnSelectWindow(aura::Window* window) { |
@@ -257,6 +280,10 @@ void WindowManagerImpl::OnSplitViewMode(aura::Window* left, |
aura::Window* right) { |
SetInOverview(false); |
FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnSplitViewModeEnter()); |
+ if (right) |
+ wm::ActivateWindow(right); |
+ else |
+ wm::ActivateWindow(left); |
pkotwicz
2014/09/08 02:27:46
I will add a parameter to indicate which window sh
|
split_view_controller_->ActivateSplitMode(left, right); |
} |
@@ -283,30 +310,12 @@ bool WindowManagerImpl::OnAcceleratorFired(int command_id, |
ToggleOverview(); |
break; |
case CMD_TOGGLE_SPLIT_VIEW: |
- ToggleSplitview(); |
+ ToggleSplitView(); |
break; |
} |
return true; |
} |
-void WindowManagerImpl::ToggleSplitview() { |
- // TODO(oshima): Figure out what to do. |
- if (IsOverviewModeActive()) |
- return; |
- |
- if (split_view_controller_->IsSplitViewModeActive()) { |
- split_view_controller_->DeactivateSplitMode(); |
- FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnSplitViewModeExit()); |
- // Relayout so that windows are maximzied. |
- container_->layout_manager()->OnWindowResized(); |
- } else if (window_list_provider_->GetWindowList().size() > 1) { |
- FOR_EACH_OBSERVER(WindowManagerObserver, |
- observers_, |
- OnSplitViewModeEnter()); |
- split_view_controller_->ActivateSplitMode(NULL, NULL); |
- } |
-} |
- |
aura::Window* WindowManagerImpl::GetWindowBehind(aura::Window* window) { |
const aura::Window::Windows& windows = window_list_provider_->GetWindowList(); |
aura::Window::Windows::const_reverse_iterator iter = |
@@ -356,8 +365,8 @@ void WindowManagerImpl::OnTitleDragCompleted(aura::Window* window) { |
if (!next_window) |
return; |
if (split_view_controller_->IsSplitViewModeActive()) { |
- split_view_controller_->ReplaceWindow(window, next_window); |
wm::ActivateWindow(next_window); |
+ split_view_controller_->ReplaceWindow(window, next_window); |
} else { |
ui::ScopedLayerAnimationSettings |
settings(next_window->layer()->GetAnimator()); |