Chromium Code Reviews| 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()); |