| Index: athena/wm/split_view_controller.cc
|
| diff --git a/athena/wm/split_view_controller.cc b/athena/wm/split_view_controller.cc
|
| index 1d61ba7d957e77f938fea6d216563401875f2e1b..5974cf1357c83791f4cf3723ebd1ec6abe777201 100644
|
| --- a/athena/wm/split_view_controller.cc
|
| +++ b/athena/wm/split_view_controller.cc
|
| @@ -65,14 +65,9 @@ void SplitViewController::ActivateSplitMode(aura::Window* left,
|
| aura::Window::Windows windows = window_list_provider_->GetWindowList();
|
| aura::Window::Windows::reverse_iterator iter = windows.rbegin();
|
| if (state_ == ACTIVE) {
|
| - if (left_window_ == right)
|
| - left_window_ = left;
|
| - if (right_window_ == left)
|
| - right_window_ = right;
|
| -
|
| - if (!left)
|
| + if (!left && left_window_ != right)
|
| left = left_window_;
|
| - if (!right)
|
| + if (!right && right_window_ != left)
|
| right = right_window_;
|
| }
|
|
|
| @@ -94,6 +89,12 @@ void SplitViewController::ActivateSplitMode(aura::Window* left,
|
| }
|
| }
|
|
|
| + to_hide_.clear();
|
| + if (left_window_ && left_window_ != left && left_window_ != right)
|
| + to_hide_.push_back(left_window_);
|
| + if (right_window_ && right_window_ != left && right_window_ != right)
|
| + to_hide_.push_back(right_window_);
|
| +
|
| SetState(ACTIVE);
|
| right_window_ = right;
|
| left_window_ = left;
|
| @@ -155,16 +156,20 @@ void SplitViewController::UpdateLayout(bool animate) {
|
| CHECK(left_window_);
|
| CHECK(right_window_);
|
|
|
| - // Splitview can be activated from SplitViewController::ActivateSplitMode or
|
| - // SplitViewController::ScrollEnd. Additionally we don't want to rotate the
|
| - // screen while engaging splitview (i.e. state_ == SCROLLING).
|
| - if (state_ == INACTIVE && !animate) {
|
| - if (!wm::IsActiveWindow(left_window_))
|
| - left_window_->Hide();
|
| - if (!wm::IsActiveWindow(right_window_))
|
| - right_window_->Hide();
|
| - SetWindowTransforms(gfx::Transform(), gfx::Transform(), false);
|
| - return;
|
| + if (!animate) {
|
| + for (size_t i = 0; i < to_hide_.size(); ++i)
|
| + to_hide_[i]->Hide();
|
| + to_hide_.clear();
|
| +
|
| + if (state_ == INACTIVE) {
|
| + if (!wm::IsActiveWindow(left_window_))
|
| + left_window_->Hide();
|
| + if (!wm::IsActiveWindow(right_window_))
|
| + right_window_->Hide();
|
| +
|
| + SetWindowTransforms(gfx::Transform(), gfx::Transform(), false);
|
| + return;
|
| + }
|
| }
|
|
|
| left_window_->Show();
|
|
|