Chromium Code Reviews| Index: components/exo/shell_surface.cc |
| diff --git a/components/exo/shell_surface.cc b/components/exo/shell_surface.cc |
| index 72f11c53c45055919cd6cbcda9f83703788b3c8d..355a1fff024a14ceddf2a819a126aaa9a39ce62e 100644 |
| --- a/components/exo/shell_surface.cc |
| +++ b/components/exo/shell_surface.cc |
| @@ -932,6 +932,13 @@ void ShellSurface::CreateShellSurfaceWidget(ui::WindowShowState show_state) { |
| window->AddObserver(this); |
| ash::wm::WindowState* window_state = ash::wm::GetWindowState(window); |
| window_state->AddObserver(this); |
| + |
| + // Absolete positioned shell surfaces may request the bounds that does not |
| + // fill the entire work area / display in maximized / fullscreen state. |
| + // Allow such clients to update the bounds in these states. |
| + if (!initial_bounds_.IsEmpty() && activatable_) |
| + window_state->set_allow_set_bounds_in_maximized(true); |
| + |
| // Notify client of initial state if different than normal. |
| if (window_state->GetStateType() != ash::wm::WINDOW_STATE_TYPE_NORMAL && |
| !state_changed_callback_.is_null()) { |
| @@ -1153,8 +1160,12 @@ void ShellSurface::UpdateWidgetBounds() { |
| DCHECK(widget_); |
| // Return early if the shell is currently managing the bounds of the widget. |
| - if (widget_->IsMaximized() || widget_->IsFullscreen() || IsResizing()) |
| + if (((widget_->IsMaximized() || widget_->IsFullscreen()) && |
|
reveman
2016/08/12 23:44:40
please split this into multiple early outs. someth
oshima
2016/08/13 00:45:07
splitting done. I still think it's better to use a
|
| + !ash::wm::GetWindowState(widget_->GetNativeWindow()) |
| + ->allow_set_bounds_in_maximized()) || |
| + IsResizing()) { |
| return; |
| + } |
| // Return early if there is pending configure requests. |
| if (!pending_configs_.empty() || scoped_configure_) |