From 1c89fce30e0f478f11f90221ddb6b831d7f0f5e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 27 Nov 2019 02:00:00 +0100 Subject: [PATCH] stack: Allow promoting transient windows to their parent's layer When a window that should be stacked above another one is placed in a lower layer than the other window, we currently allow promoting it to the higher layer when it has a "transient type". We should do the same when the window is an actual transient of the other window. This is particularly relevant for wayland windows, where types play a much smaller role: Transient windows like non-modal dialogs (and since commit 666bef7a, popup windows as well) currently end up underneath their always-on-top parent. https://gitlab.gnome.org/GNOME/mutter/issues/587 --- src/core/stack.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/core/stack.c b/src/core/stack.c index 1279066ff..d7a0c9c67 100644 --- a/src/core/stack.c +++ b/src/core/stack.c @@ -859,8 +859,11 @@ static void ensure_above (MetaWindow *above, MetaWindow *below) { - if (WINDOW_HAS_TRANSIENT_TYPE(above) && - above->layer < below->layer) + gboolean is_transient; + + is_transient = WINDOW_HAS_TRANSIENT_TYPE (above) || + above->transient_for == below; + if (is_transient && above->layer < below->layer) { meta_topic (META_DEBUG_STACK, "Promoting window %s from layer %u to %u due to contraint\n",