diff --git a/src/wayland/meta-window-wayland.c b/src/wayland/meta-window-wayland.c index 9864d2fd4..86cdbf86e 100644 --- a/src/wayland/meta-window-wayland.c +++ b/src/wayland/meta-window-wayland.c @@ -1001,6 +1001,10 @@ void meta_window_place_with_placement_rule (MetaWindow *window, MetaPlacementRule *placement_rule) { + gboolean first_placement; + + first_placement = !window->placement.rule; + g_clear_pointer (&window->placement.rule, g_free); window->placement.rule = g_new0 (MetaPlacementRule, 1); *window->placement.rule = *placement_rule; @@ -1009,12 +1013,15 @@ meta_window_place_with_placement_rule (MetaWindow *window, window->unconstrained_rect.y = window->rect.y; window->unconstrained_rect.width = placement_rule->width; window->unconstrained_rect.height = placement_rule->height; + + window->calc_placement = first_placement; meta_window_move_resize_internal (window, (META_MOVE_RESIZE_MOVE_ACTION | META_MOVE_RESIZE_RESIZE_ACTION | META_MOVE_RESIZE_PLACEMENT_CHANGED), META_GRAVITY_NORTH_WEST, window->unconstrained_rect); + window->calc_placement = FALSE; } void