]> git.sur5r.net Git - i3/i3/blobdiff - i3bar/src/child.c
Introduce the short_text property on blocks and parse it according to the documentation.
[i3/i3] / i3bar / src / child.c
index 1860b8792d9798fa820880eb8dcb680caf322102..521951f5cc664db3f517b9d6b04404c08f9e65f0 100644 (file)
@@ -70,8 +70,10 @@ static void clear_statusline(struct statusline_head *head, bool free_resources)
         first = TAILQ_FIRST(head);
         if (free_resources) {
             I3STRING_FREE(first->full_text);
+            I3STRING_FREE(first->short_text);
             FREE(first->color);
             FREE(first->name);
+            FREE(first->instance);
         }
 
         TAILQ_REMOVE(head, first, blocks);
@@ -81,7 +83,7 @@ static void clear_statusline(struct statusline_head *head, bool free_resources)
 
 static void copy_statusline(struct statusline_head *from, struct statusline_head *to) {
     struct status_block *current;
-    TAILQ_FOREACH (current, from, blocks) {
+    TAILQ_FOREACH(current, from, blocks) {
         struct status_block *new_block = smalloc(sizeof(struct status_block));
         memcpy(new_block, current, sizeof(struct status_block));
         TAILQ_INSERT_TAIL(to, new_block, blocks);
@@ -185,7 +187,10 @@ static int stdin_boolean(void *context, int val) {
 static int stdin_string(void *context, const unsigned char *val, size_t len) {
     parser_ctx *ctx = context;
     if (strcasecmp(ctx->last_map_key, "full_text") == 0) {
-        ctx->block.full_text = i3string_from_utf8_with_length((const char *)val, len);
+        ctx->block.full_text = i3string_from_markup_with_length((const char *)val, len);
+    }
+    if (strcasecmp(ctx->last_map_key, "short_text") == 0) {
+        ctx->block.short_text = i3string_from_markup_with_length((const char *)val, len);
     }
     if (strcasecmp(ctx->last_map_key, "color") == 0) {
         sasprintf(&(ctx->block.color), "%.*s", len, val);
@@ -199,7 +204,7 @@ static int stdin_string(void *context, const unsigned char *val, size_t len) {
             ctx->block.align = ALIGN_LEFT;
         }
     } else if (strcasecmp(ctx->last_map_key, "min_width") == 0) {
-        i3String *text = i3string_from_utf8_with_length((const char *)val, len);
+        i3String *text = i3string_from_markup_with_length((const char *)val, len);
         ctx->block.min_width = (uint32_t)predict_text_width(text);
         i3string_free(text);
     }
@@ -260,6 +265,7 @@ static int stdin_end_array(void *context) {
     struct status_block *current;
     TAILQ_FOREACH(current, &statusline_head, blocks) {
         DLOG("full_text = %s\n", i3string_as_utf8(current->full_text));
+        DLOG("short_text = %s\n", i3string_as_utf8(current->short_text));
         DLOG("color = %s\n", current->color);
     }
     DLOG("end of dump\n");
@@ -319,7 +325,7 @@ static void read_flat_input(char *buffer, int length) {
         buffer[length - 1] = '\0';
     else
         buffer[length] = '\0';
-    first->full_text = i3string_from_utf8(buffer);
+    first->full_text = i3string_from_markup(buffer);
 }
 
 static bool read_json_input(unsigned char *input, int length) {