]> git.sur5r.net Git - i3/i3/blobdiff - i3bar/include/common.h
Merge pull request #3179 from orestisf1993/issue-2733
[i3/i3] / i3bar / include / common.h
index 7ab3441f08b569dd9c7806ee33161df7066a1587..77be318235681341c41ad39453f967544219383d 100644 (file)
@@ -7,6 +7,8 @@
  */
 #pragma once
 
+#include <config.h>
+
 #include <stdbool.h>
 #include <xcb/xcb.h>
 #include <xcb/xproto.h>
@@ -31,6 +33,14 @@ typedef enum {
     ALIGN_RIGHT
 } blockalign_t;
 
+/* This data structure describes the way a status block should be rendered. These
+ * variables are updated each time the statusline is re-rendered. */
+struct status_block_render_desc {
+    uint32_t width;
+    uint32_t x_offset;
+    uint32_t x_append;
+};
+
 /* This data structure represents one JSON dictionary, multiple of these make
  * up one status line. */
 struct status_block {
@@ -56,20 +66,20 @@ struct status_block {
     /* The amount of pixels necessary to render a separater after the block. */
     uint32_t sep_block_width;
 
-    /* The amount of pixels necessary to render this block. These variables are
-     * only temporarily used in refresh_statusline(). */
-    uint32_t width;
-    uint32_t x_offset;
-    uint32_t x_append;
+    /* Continuously-updated information on how to render this status block. */
+    struct status_block_render_desc full_render;
+    struct status_block_render_desc short_render;
 
     /* Optional */
     char *name;
     char *instance;
 
-    TAILQ_ENTRY(status_block) blocks;
+    TAILQ_ENTRY(status_block)
+    blocks;
 };
 
-TAILQ_HEAD(statusline_head, status_block) statusline_head;
+TAILQ_HEAD(statusline_head, status_block)
+statusline_head;
 
 #include "child.h"
 #include "ipc.h"
@@ -79,7 +89,6 @@ TAILQ_HEAD(statusline_head, status_block) statusline_head;
 #include "mode.h"
 #include "trayclients.h"
 #include "xcb.h"
-#include "config.h"
+#include "configuration.h"
 #include "libi3.h"
 #include "parse_json_header.h"
-#include "draw_util.h"