Rebase #1636 against current master
This commit is contained in:
parent
1049f360e1
commit
204e1f4712
|
@ -7,7 +7,7 @@
|
|||
struct i3bar_block {
|
||||
struct wl_list link; // status_link::blocks
|
||||
int ref_count;
|
||||
char *full_text, *short_text, *align;
|
||||
char *full_text, *short_text, *align, *min_width_str;
|
||||
bool urgent;
|
||||
uint32_t *color;
|
||||
int min_width;
|
||||
|
|
|
@ -21,6 +21,7 @@ void i3bar_block_unref(struct i3bar_block *block) {
|
|||
free(block->full_text);
|
||||
free(block->short_text);
|
||||
free(block->align);
|
||||
free(block->min_width_str);
|
||||
free(block->name);
|
||||
free(block->instance);
|
||||
free(block->color);
|
||||
|
@ -78,7 +79,7 @@ static void i3bar_parse_json(struct status_line *status,
|
|||
block->min_width = json_object_get_int(min_width);
|
||||
} else if (type == json_type_string) {
|
||||
/* the width will be calculated when rendering */
|
||||
block->min_width = 0;
|
||||
block->min_width_str = strdup(json_object_get_string(min_width));
|
||||
}
|
||||
}
|
||||
block->align = strdup(align ? json_object_get_string(align) : "left");
|
||||
|
|
|
@ -159,6 +159,12 @@ static uint32_t render_status_block(cairo_t *cairo,
|
|||
double ws_vertical_padding = config->status_padding * output->scale;
|
||||
|
||||
int width = text_width;
|
||||
if (block->min_width_str) {
|
||||
int w;
|
||||
get_text_size(cairo, config->font, &w, NULL, NULL,
|
||||
output->scale, block->markup, "%s", block->min_width_str);
|
||||
block->min_width = w;
|
||||
}
|
||||
if (width < block->min_width) {
|
||||
width = block->min_width;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue