]> git.sur5r.net Git - i3/i3/commitdiff
Bugfix: Don’t draw borders for fullscreen windows
authorMichael Stapelberg <michael@stapelberg.de>
Sun, 21 Nov 2010 16:00:10 +0000 (17:00 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 21 Nov 2010 16:00:10 +0000 (17:00 +0100)
include/render.h
src/con.c
src/render.c
src/tree.c

index 849f214e5f1ef379b57b20fa86642ba1dbcd7bed..94084489d3331c7b6c1fd491e69002d778aa3ca7 100644 (file)
@@ -13,6 +13,6 @@
  * updated in X11.
  *
  */
-void render_con(Con *con);
+void render_con(Con *con, bool render_fullscreen);
 
 #endif
index fb6866d873a025a8fa866384918e79f0ecfe086c..a01bdcc1c45dbd9ae7645297769414b75470611a 100644 (file)
--- a/src/con.c
+++ b/src/con.c
@@ -503,6 +503,12 @@ Rect con_border_style_rect(Con *con) {
  *
  */
 int con_border_style(Con *con) {
+    Con *fs = con_get_fullscreen_con(con->parent);
+    if (fs == con) {
+        DLOG("this one is fullscreen! overriding BS_NONE\n");
+        return BS_NONE;
+    }
+
     if (con->parent->layout == L_STACKED)
         return BS_NORMAL;
 
index e3069e7218e2c3fa5028f74545824299b9a32d99..b1b1bd897c4463d374b84dd305e30bbc44b465ea 100644 (file)
@@ -16,7 +16,7 @@ static bool show_debug_borders = false;
  * updated in X11.
  *
  */
-void render_con(Con *con) {
+void render_con(Con *con, bool render_fullscreen) {
     printf("currently rendering node %p / %s / layout %d\n",
             con, con->name, con->layout);
     int children = con_num_children(con);
@@ -49,7 +49,8 @@ void render_con(Con *con) {
          * needs to be smaller */
         Rect *inset = &(con->window_rect);
         *inset = (Rect){0, 0, con->rect.width, con->rect.height};
-        *inset = rect_add(*inset, con_border_style_rect(con));
+        if (!render_fullscreen)
+            *inset = rect_add(*inset, con_border_style_rect(con));
 
         /* Obey x11 border */
         inset->width -= (2 * con->border_width);
@@ -100,7 +101,7 @@ void render_con(Con *con) {
         LOG("got fs node: %p\n", fullscreen);
         fullscreen->rect = rect;
         x_raise_con(fullscreen);
-        render_con(fullscreen);
+        render_con(fullscreen, true);
         return;
     }
 
@@ -186,7 +187,7 @@ void render_con(Con *con) {
                 child->rect.x, child->rect.y, child->rect.width, child->rect.height);
         printf("x now %d, y now %d\n", x, y);
         x_raise_con(child);
-        render_con(child);
+        render_con(child, false);
         i++;
     }
 
@@ -198,7 +199,7 @@ void render_con(Con *con) {
             x_raise_con(foc);
             /* by rendering the stacked container again, we handle the case
              * that we have a non-leaf-container inside the stack. */
-            render_con(foc);
+            render_con(foc, false);
         }
     }
 
@@ -206,7 +207,7 @@ void render_con(Con *con) {
         LOG("render floating:\n");
         LOG("floating child at (%d,%d) with %d x %d\n", child->rect.x, child->rect.y, child->rect.width, child->rect.height);
         x_raise_con(child);
-        render_con(child);
+        render_con(child, false);
     }
 
     printf("-- level up\n");
index e0b1ab7d6c170a47f6bb572c90b3a371ac6d7b2e..734406b3daf74f12f6bf542a9398913cba7333f0 100644 (file)
@@ -331,7 +331,7 @@ void tree_render() {
     Con *output;
     TAILQ_FOREACH(output, &(croot->nodes_head), nodes) {
         printf("output %p / %s\n", output, output->name);
-        render_con(output);
+        render_con(output, false);
     }
     x_push_changes(croot);
     printf("-- END RENDERING --\n");