diff options
author | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2021-06-21 18:30:21 +0300 |
---|---|---|
committer | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2021-06-27 13:26:00 +0300 |
commit | 145e5a98344f0a20e9db17cd84ecb10eef85611f (patch) | |
tree | 8d896045a83cce1212a14cd2428a483f8188fc02 | |
parent | b2822c04ac788fd4c50b2c651849dbc4c224e790 (diff) | |
download | metacity-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.c | 10 |
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) |