Initialize window->user_rect in the initial placement

The window positioning is delayed in idle_move_resize() in case the application
resizes/maximizes its window quickly after its creation. The delayed
positioning uses window->user_rect because of bug 426519 comment 3 (see
meta_window_move_resize_now()).

user_rect was not set in the initial positioning, causing the delayed
positioning unable to know which monitor we use for this window. As a
consequence, the window could jump spontaneously from one monitor to another.

With this patch, the window does not jump anymore.

https://bugzilla.gnome.org/show_bug.cgi?id=556696
This commit is contained in:
Alban Crequy 2012-11-23 00:06:22 +00:00
parent 01507d975d
commit 844ad6f4d4

View File

@ -564,6 +564,11 @@ place_window_if_needed(MetaWindow *window,
.083 * info->work_area_monitor.height; .083 * info->work_area_monitor.height;
} }
/* idle_move_resize() uses the user_rect, so make sure it uses the
* placed coordinates (bug #556696).
*/
window->user_rect = info->current;
if (window->maximize_horizontally_after_placement || if (window->maximize_horizontally_after_placement ||
window->maximize_vertically_after_placement) window->maximize_vertically_after_placement)
meta_window_maximize_internal (window, meta_window_maximize_internal (window,