Bugfix: render floating windows during global fullscreen (Thanks dmurph, Mats)

fixes #1393
This commit is contained in:
Michael Stapelberg 2015-01-17 18:19:15 +01:00
parent fa41ad7e21
commit 8b96bb0298
1 changed files with 13 additions and 3 deletions

View File

@ -210,8 +210,16 @@ void render_con(Con *con, bool render_fullscreen) {
fullscreen->rect = rect; fullscreen->rect = rect;
x_raise_con(fullscreen); x_raise_con(fullscreen);
render_con(fullscreen, true); render_con(fullscreen, true);
/* 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; return;
} }
}
/* find the height for the decorations */ /* find the height for the decorations */
int deco_height = render_deco_height(); int deco_height = render_deco_height();
@ -247,9 +255,11 @@ void render_con(Con *con, bool render_fullscreen) {
render_l_output(con); render_l_output(con);
} else if (con->type == CT_ROOT) { } else if (con->type == CT_ROOT) {
Con *output; Con *output;
if (!fullscreen) {
TAILQ_FOREACH (output, &(con->nodes_head), nodes) { TAILQ_FOREACH (output, &(con->nodes_head), nodes) {
render_con(output, false); render_con(output, false);
} }
}
/* We need to render floating windows after rendering all outputs /* We need to render floating windows after rendering all outputs
* tiling windows because they need to be on top of *every* output at * tiling windows because they need to be on top of *every* output at