Bugfix: render floating windows during global fullscreen

(upstream git commit 8b96bb0298fd9555a7c87d807651c0094c469e76)
This commit is contained in:
dcoppa 2015-01-18 19:45:43 +00:00
parent f95a767f33
commit b6ec384c03
2 changed files with 42 additions and 2 deletions

View File

@ -1,9 +1,9 @@
# $OpenBSD: Makefile,v 1.88 2014/08/18 08:46:27 dcoppa Exp $
# $OpenBSD: Makefile,v 1.89 2015/01/18 19:45:43 dcoppa Exp $
COMMENT = improved dynamic tiling window manager
DISTNAME = i3-4.8
REVISION = 0
REVISION = 1
CATEGORIES = x11
EXTRACT_SUFX = .tar.bz2

View File

@ -0,0 +1,40 @@
$OpenBSD: patch-src_render_c,v 1.7 2015/01/18 19:45:44 dcoppa Exp $
commit 8b96bb0298fd9555a7c87d807651c0094c469e76
Author: Michael Stapelberg <michael@stapelberg.de>
Date: Sat Jan 17 18:19:15 2015 +0100
Bugfix: render floating windows during global fullscreen
--- src/render.c.orig Sun Jun 15 12:12:43 2014
+++ src/render.c Sun Jan 18 13:40:17 2015
@@ -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