From 8b96bb0298fd9555a7c87d807651c0094c469e76 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sat, 17 Jan 2015 18:19:15 +0100 Subject: [PATCH] Bugfix: render floating windows during global fullscreen (Thanks dmurph, Mats) fixes #1393 --- src/render.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/render.c b/src/render.c index 38a4d786..2f39b082 100644 --- a/src/render.c +++ b/src/render.c @@ -210,7 +210,15 @@ void render_con(Con *con, bool render_fullscreen) { fullscreen->rect = rect; x_raise_con(fullscreen); render_con(fullscreen, true); - return; + /* Fullscreen containers are either global (underneath the CT_ROOT + * container) or per-output (underneath the CT_CONTENT container). For + * global fullscreen containers, we cannot abort rendering here yet, + * because the floating windows (with popup_during_fullscreen smart) + * have not yet been rendered (see the CT_ROOT code path below). See + * also http://bugs.i3wm.org/1393 */ + if (con->type != CT_ROOT) { + return; + } } /* find the height for the decorations */ @@ -247,8 +255,10 @@ void render_con(Con *con, bool render_fullscreen) { render_l_output(con); } else if (con->type == CT_ROOT) { Con *output; - TAILQ_FOREACH (output, &(con->nodes_head), nodes) { - render_con(output, false); + if (!fullscreen) { + TAILQ_FOREACH (output, &(con->nodes_head), nodes) { + render_con(output, false); + } } /* We need to render floating windows after rendering all outputs’