| Index: ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
|
| diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
|
| index 1fd497f8b0197acafe82684fec3ffbc2739a1352..d82843a4072eec9ca3d038e24f53c64f879f9194 100644
|
| --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
|
| +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
|
| @@ -138,6 +138,7 @@
|
| is_fullscreen_(false),
|
| is_always_on_top_(false),
|
| use_native_frame_(false),
|
| + should_maximize_after_map_(false),
|
| use_argb_visual_(false),
|
| drag_drop_client_(NULL),
|
| native_widget_delegate_(native_widget_delegate),
|
| @@ -366,9 +367,6 @@
|
|
|
| if (show_state == ui::SHOW_STATE_NORMAL ||
|
| show_state == ui::SHOW_STATE_MAXIMIZED) {
|
| - // Note: XFCE ignores a maximize hint given before mapping the window.
|
| - if (show_state == ui::SHOW_STATE_MAXIMIZED)
|
| - Maximize();
|
| Activate();
|
| }
|
|
|
| @@ -541,6 +539,10 @@
|
| SetBounds(adjusted_bounds);
|
| }
|
|
|
| + // Some WMs do not respect maximization hints on unmapped windows, so we
|
| + // save this one for later too.
|
| + should_maximize_after_map_ = !window_mapped_;
|
| +
|
| // When we are in the process of requesting to maximize a window, we can
|
| // accurately keep track of our restored bounds instead of relying on the
|
| // heuristics that are in the PropertyNotify and ConfigureNotify handlers.
|
| @@ -559,6 +561,7 @@
|
| }
|
|
|
| void DesktopWindowTreeHostX11::Restore() {
|
| + should_maximize_after_map_ = false;
|
| SetWMSpecState(false,
|
| atom_cache_.GetAtom("_NET_WM_STATE_MAXIMIZED_VERT"),
|
| atom_cache_.GetAtom("_NET_WM_STATE_MAXIMIZED_HORZ"));
|
| @@ -1583,6 +1586,13 @@
|
| if (ui::X11EventSource::GetInstance())
|
| ui::X11EventSource::GetInstance()->BlockUntilWindowMapped(xwindow_);
|
| window_mapped_ = true;
|
| +
|
| + // Some WMs only respect maximize hints after the window has been mapped.
|
| + // Check whether we need to re-do a maximization.
|
| + if (should_maximize_after_map_) {
|
| + Maximize();
|
| + should_maximize_after_map_ = false;
|
| + }
|
| }
|
|
|
| void DesktopWindowTreeHostX11::SetWindowTransparency() {
|
|
|