Index: athena/wm/split_view_controller.cc |
diff --git a/athena/wm/split_view_controller.cc b/athena/wm/split_view_controller.cc |
index 9e8984a30c6065f7ab1ba4aa1fc60575ec4458e7..997c107e244179dbfac1f83da353a4f3bd6c1fad 100644 |
--- a/athena/wm/split_view_controller.cc |
+++ b/athena/wm/split_view_controller.cc |
@@ -32,11 +32,13 @@ SplitViewController::SplitViewController( |
right_window_(NULL), |
separator_position_(0), |
weak_factory_(this) { |
- window_manager->AddObserver(this); |
+ if (window_manager_) |
+ window_manager_->AddObserver(this); |
} |
SplitViewController::~SplitViewController() { |
- window_manager_->RemoveObserver(this); |
+ if (window_manager_) |
+ window_manager_->RemoveObserver(this); |
} |
bool SplitViewController::IsSplitViewModeActive() const { |
@@ -48,6 +50,11 @@ 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) |
left = left_window_; |
if (!right) |
@@ -73,10 +80,14 @@ void SplitViewController::ActivateSplitMode(aura::Window* left, |
} |
state_ = ACTIVE; |
- left_window_ = left; |
- right_window_ = right; |
- container_->StackChildAtTop(right_window_); |
- container_->StackChildAtTop(left_window_); |
+ if (right_window_ != right) { |
+ right_window_ = right; |
+ container_->StackChildAtTop(right_window_); |
+ } |
+ if (left_window_ != left) { |
+ left_window_ = left; |
+ container_->StackChildAtTop(left_window_); |
+ } |
UpdateLayout(true); |
} |
@@ -256,7 +267,7 @@ void SplitViewController::ScrollUpdate(float delta) { |
bool SplitViewController::CanScroll() { |
// TODO(mfomitchev): return false in vertical orientation, in full screen. |
- bool result = (!window_manager_->IsOverviewModeActive() && |
+ bool result = (window_manager_ && !window_manager_->IsOverviewModeActive() && |
!IsSplitViewModeActive() && |
window_list_provider_->GetWindowList().size() >= 2); |
return result; |