Backport all patches to git master for various fixes inc (#1809717)
This commit is contained in:
52
0031-wayland-window-Ignore-state-changes-for-popups.patch
Normal file
52
0031-wayland-window-Ignore-state-changes-for-popups.patch
Normal file
@@ -0,0 +1,52 @@
|
||||
From fa74da0039b848e3beaff5d0da44e6d3f2c46dc9 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Thu, 12 Mar 2020 19:34:03 +0100
|
||||
Subject: [PATCH 31/48] wayland/window: Ignore state changes for popups
|
||||
|
||||
We send configure events for state changes e.g. for `appears-focused`,
|
||||
etc. What we don't want to do is to do this for popup windows, as in
|
||||
Wayland don't care about this state.
|
||||
|
||||
When the focus mode was configured to "sloppy focus" we'd get
|
||||
`appears-focused` state changes for the popup window only by moving the
|
||||
mouse cursor around, and while a popup may care about focus, it does not
|
||||
care about related appearance, as there is no such state in xdg_popup.
|
||||
|
||||
What these state changes instead resulted in was absolute window
|
||||
configuration events, intended for toplevel (xdg_toplevel) windows. In
|
||||
the end this caused the popup to be positioned aginst at (0, 0) of the
|
||||
parent window, as the assumptions when the configuration of the popup
|
||||
was acknowledged is that it had received a relative position window
|
||||
configuration.
|
||||
|
||||
Fix this by simply ignoring any state changes of the window if it is a
|
||||
popup, meaning we won't send any configuration events intended for
|
||||
toplevels for state changes. Currently we don't have any way to know
|
||||
this other than checking whether it has a placement rule. Cleaning up
|
||||
MetaWindow creation is left to be dealt with another day.
|
||||
|
||||
Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/1103
|
||||
|
||||
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1122
|
||||
---
|
||||
src/wayland/meta-window-wayland.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/src/wayland/meta-window-wayland.c b/src/wayland/meta-window-wayland.c
|
||||
index 86cdbf86e..b6b949e36 100644
|
||||
--- a/src/wayland/meta-window-wayland.c
|
||||
+++ b/src/wayland/meta-window-wayland.c
|
||||
@@ -634,6 +634,10 @@ appears_focused_changed (GObject *object,
|
||||
gpointer user_data)
|
||||
{
|
||||
MetaWindow *window = META_WINDOW (object);
|
||||
+
|
||||
+ if (window->placement.rule)
|
||||
+ return;
|
||||
+
|
||||
surface_state_changed (window);
|
||||
}
|
||||
|
||||
--
|
||||
2.26.0.rc2
|
||||
|
||||
Reference in New Issue
Block a user