| Index: ash/common/wm_window.cc
|
| diff --git a/ash/common/wm_window.cc b/ash/common/wm_window.cc
|
| index 74c64d6e5a579ac1eb7a2b4aeb4e12862150a424..21281fd6197dc4782a958ff33dd4013450d69869 100644
|
| --- a/ash/common/wm_window.cc
|
| +++ b/ash/common/wm_window.cc
|
| @@ -610,6 +610,7 @@ ui::WindowShowState WmWindow::GetShowState() const {
|
| }
|
|
|
| void WmWindow::SetPreMinimizedShowState(ui::WindowShowState show_state) {
|
| + DCHECK_NE(show_state, ui::SHOW_STATE_PREVIOUS);
|
| window_->SetProperty(aura::client::kPreMinimizedShowStateKey, show_state);
|
| }
|
|
|
| @@ -621,6 +622,7 @@ void WmWindow::SetPreFullscreenShowState(ui::WindowShowState show_state) {
|
| // We should never store the ui::SHOW_STATE_MINIMIZED as the show state before
|
| // fullscreen.
|
| DCHECK_NE(show_state, ui::SHOW_STATE_MINIMIZED);
|
| + DCHECK_NE(show_state, ui::SHOW_STATE_PREVIOUS);
|
| window_->SetProperty(aura::client::kPreFullscreenShowStateKey, show_state);
|
| }
|
|
|
| @@ -772,6 +774,7 @@ void WmWindow::SetFullscreen(bool fullscreen) {
|
| } else {
|
| auto state = window_->GetProperty(aura::client::kPreFullscreenShowStateKey);
|
| DCHECK_NE(state, ui::SHOW_STATE_MINIMIZED);
|
| + DCHECK_NE(state, ui::SHOW_STATE_PREVIOUS);
|
| window_->SetProperty(aura::client::kShowStateKey, state);
|
| window_->ClearProperty(aura::client::kPreFullscreenShowStateKey);
|
| }
|
| @@ -942,7 +945,19 @@ void WmWindow::OnWindowPropertyChanged(aura::Window* window,
|
| const void* key,
|
| intptr_t old) {
|
| if (key == aura::client::kShowStateKey) {
|
| - ash::wm::GetWindowState(window_)->OnWindowShowStateChanged();
|
| + ui::WindowShowState state = GetShowState();
|
| + if (state == ui::SHOW_STATE_PREVIOUS) {
|
| + ui::WindowShowState old_state = static_cast<ui::WindowShowState>(old);
|
| + if (old_state == ui::SHOW_STATE_FULLSCREEN) {
|
| + SetFullscreen(false);
|
| + } else if (old_state == ui::SHOW_STATE_MINIMIZED) {
|
| + Unminimize();
|
| + } else {
|
| + NOTREACHED();
|
| + }
|
| + } else {
|
| + ash::wm::GetWindowState(window_)->OnWindowShowStateChanged();
|
| + }
|
| return;
|
| }
|
| WmWindowProperty wm_property;
|
|
|