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-21 18:30:21 +0300 |
commit | 2bbce9f21abbd166d314d1b3346905bb4e234087 (patch) | |
tree | c2857e9e0c92422a4740a30f23b42edc4db2cd1a /src | |
parent | 15161227389385a1d55c86d4c27eb1254eb88500 (diff) | |
download | metacity-2bbce9f21abbd166d314d1b3346905bb4e234087.tar.gz |
window-props: don't set override-redirect window as parent
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
Diffstat (limited to 'src')
-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 a6ad2b03..680b236b 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) |