summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2021-06-21 18:30:21 +0300
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2021-06-27 13:26:00 +0300
commit145e5a98344f0a20e9db17cd84ecb10eef85611f (patch)
tree8d896045a83cce1212a14cd2428a483f8188fc02
parentb2822c04ac788fd4c50b2c651849dbc4c224e790 (diff)
downloadmetacity-gnome-3-36.tar.gz
window-props: don't set override-redirect window as parentgnome-3-36
Before commit c656c658940d override-redirect windows was not registered with meta_display_register_x_window. This means that Metacity was treating WM_TRANSIENT_FOR hint as invalid if it was pointing to override-redirect window. EWMH specification [1] says that WM_TRANSIENT_FOR property is defined for managed windows and extends its usage for override-redirect windows. Client should set WM_TRANSIENT_FOR on override-redirect window if it is child/popup for another window. As specification does not say anyting about using override-redirect windows as parent for managed windows and because it causes crashes in Metacity ignore WM_TRANSIENT_FOR if it is pointing to override-redirect window. [1] https://specifications.freedesktop.org/wm-spec/wm-spec-latest.html#idm46291029654544 https://gitlab.gnome.org/GNOME/metacity/-/issues/18
-rw-r--r--src/core/window-props.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/core/window-props.c b/src/core/window-props.c
index 64d500bd..2858c291 100644
--- a/src/core/window-props.c
+++ b/src/core/window-props.c
@@ -1623,6 +1623,16 @@ reload_transient_for (MetaWindow *window,
transient_for, window->desc);
transient_for = None;
}
+ else if (parent->override_redirect)
+ {
+ g_warning ("Ignoring WM_TRANSIENT_FOR for %s because it is pointing "
+ "to override-redirect window %s.",
+ window->desc,
+ parent->desc);
+
+ transient_for = None;
+ parent = NULL;
+ }
/* Make sure there is not a loop */
while (parent)