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:25:26 +0300
commitccb62737f21f969cc248a00af931bfac9ad0006b (patch)
treeb5fd6e5458926896239e6c5e4588fe337fb17251
parentd9f650c07f2cdc18d924ec67103c0d734ed02c25 (diff)
downloadmetacity-gnome-3-38.tar.gz
window-props: don't set override-redirect window as parentgnome-3-38
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 bc5e235e..ac3d38a4 100644
--- a/src/core/window-props.c
+++ b/src/core/window-props.c
@@ -1603,6 +1603,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)