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:25:26 +0300 |
commit | ccb62737f21f969cc248a00af931bfac9ad0006b (patch) | |
tree | b5fd6e5458926896239e6c5e4588fe337fb17251 | |
parent | d9f650c07f2cdc18d924ec67103c0d734ed02c25 (diff) | |
download | metacity-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.c | 10 |
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) |