55 lines
2.1 KiB
Diff
55 lines
2.1 KiB
Diff
|
From 6cd0aa429f0e042477ca89a5a9c0176f36ad117b Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||
|
Date: Fri, 6 Mar 2020 17:24:35 +0100
|
||
|
Subject: [PATCH] window: Force placement for first placement rule
|
||
|
|
||
|
If we don't force the placement, we enter the constrain machinery with
|
||
|
the position (0, 0), meaning we always get the "current work area" setup
|
||
|
to correspond to whatever logical monitor was at that position.
|
||
|
|
||
|
Avoid this by doing the same as "meta_window_force_placement()" and set
|
||
|
"window->calc_placement" to TRUE while move-resizing, causing the
|
||
|
move-resize to first calculate the initial position.
|
||
|
|
||
|
Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/1098
|
||
|
|
||
|
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1110
|
||
|
---
|
||
|
src/wayland/meta-window-wayland.c | 7 +++++++
|
||
|
1 file changed, 7 insertions(+)
|
||
|
|
||
|
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
|
||
|
--
|
||
|
2.24.1
|
||
|
|