aboutsummaryrefslogtreecommitdiffstats
path: root/swaybar
diff options
context:
space:
mode:
authorLibravatar v44r <dv@v44r.com>2019-01-31 10:45:12 +0100
committerLibravatar emersion <contact@emersion.fr>2019-01-31 15:37:57 +0100
commit204e1f47122d5a48865802dd1fb94fe0f05c2401 (patch)
tree313dd04af04ccdbbca2c8292e1b304a0ffb89ba7 /swaybar
parentreadme: scdoc 1.8.1 is now required (diff)
downloadsway-204e1f47122d5a48865802dd1fb94fe0f05c2401.tar.gz
sway-204e1f47122d5a48865802dd1fb94fe0f05c2401.tar.zst
sway-204e1f47122d5a48865802dd1fb94fe0f05c2401.zip
Rebase #1636 against current master
Diffstat (limited to 'swaybar')
-rw-r--r--swaybar/i3bar.c3
-rw-r--r--swaybar/render.c6
2 files changed, 8 insertions, 1 deletions
diff --git a/swaybar/i3bar.c b/swaybar/i3bar.c
index da93a132..43e2fe2d 100644
--- a/swaybar/i3bar.c
+++ b/swaybar/i3bar.c
@@ -21,6 +21,7 @@ void i3bar_block_unref(struct i3bar_block *block) {
21 free(block->full_text); 21 free(block->full_text);
22 free(block->short_text); 22 free(block->short_text);
23 free(block->align); 23 free(block->align);
24 free(block->min_width_str);
24 free(block->name); 25 free(block->name);
25 free(block->instance); 26 free(block->instance);
26 free(block->color); 27 free(block->color);
@@ -78,7 +79,7 @@ static void i3bar_parse_json(struct status_line *status,
78 block->min_width = json_object_get_int(min_width); 79 block->min_width = json_object_get_int(min_width);
79 } else if (type == json_type_string) { 80 } else if (type == json_type_string) {
80 /* the width will be calculated when rendering */ 81 /* the width will be calculated when rendering */
81 block->min_width = 0; 82 block->min_width_str = strdup(json_object_get_string(min_width));
82 } 83 }
83 } 84 }
84 block->align = strdup(align ? json_object_get_string(align) : "left"); 85 block->align = strdup(align ? json_object_get_string(align) : "left");
diff --git a/swaybar/render.c b/swaybar/render.c
index e27f7d4c..116cc595 100644
--- a/swaybar/render.c
+++ b/swaybar/render.c
@@ -159,6 +159,12 @@ static uint32_t render_status_block(cairo_t *cairo,
159 double ws_vertical_padding = config->status_padding * output->scale; 159 double ws_vertical_padding = config->status_padding * output->scale;
160 160
161 int width = text_width; 161 int width = text_width;
162 if (block->min_width_str) {
163 int w;
164 get_text_size(cairo, config->font, &w, NULL, NULL,
165 output->scale, block->markup, "%s", block->min_width_str);
166 block->min_width = w;
167 }
162 if (width < block->min_width) { 168 if (width < block->min_width) {
163 width = block->min_width; 169 width = block->min_width;
164 } 170 }