window: do not force placing window if it is not mapped

When managing window, we queue showing the window.
Under wayland, if we commit surface quickly enough,
the showing is unqueued and commit procedure takes care
of mapping and placing the window. In the oposite case,
queue is processed before client sets all we need and
then we have wrong size of window, which leads to broken placement.
Therefore force placement in queue only if the window should already
be mapped. If it is not mapped, we don't care where it is anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=751887
This commit is contained in:
Marek Chalupa 2015-07-10 17:24:55 +02:00 committed by Jonas Ådahl
parent ca7c1d5e02
commit 99c0b82b15

View File

@ -1579,8 +1579,10 @@ implement_showing (MetaWindow *window,
* windows we might want to know where they are on the screen, * windows we might want to know where they are on the screen,
* so we should place the window even if we're hiding it rather * so we should place the window even if we're hiding it rather
* than showing it. * than showing it.
* Force placing windows only when they should be already mapped,
* see #751887
*/ */
if (!window->placed) if (!window->placed && client_window_should_be_mapped (window))
meta_window_force_placement (window); meta_window_force_placement (window);
meta_window_hide (window); meta_window_hide (window);