Rebase #1636 against current master
This commit is contained in:
parent
1049f360e1
commit
204e1f4712
|
@ -7,7 +7,7 @@
|
||||||
struct i3bar_block {
|
struct i3bar_block {
|
||||||
struct wl_list link; // status_link::blocks
|
struct wl_list link; // status_link::blocks
|
||||||
int ref_count;
|
int ref_count;
|
||||||
char *full_text, *short_text, *align;
|
char *full_text, *short_text, *align, *min_width_str;
|
||||||
bool urgent;
|
bool urgent;
|
||||||
uint32_t *color;
|
uint32_t *color;
|
||||||
int min_width;
|
int min_width;
|
||||||
|
|
|
@ -21,6 +21,7 @@ void i3bar_block_unref(struct i3bar_block *block) {
|
||||||
free(block->full_text);
|
free(block->full_text);
|
||||||
free(block->short_text);
|
free(block->short_text);
|
||||||
free(block->align);
|
free(block->align);
|
||||||
|
free(block->min_width_str);
|
||||||
free(block->name);
|
free(block->name);
|
||||||
free(block->instance);
|
free(block->instance);
|
||||||
free(block->color);
|
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);
|
block->min_width = json_object_get_int(min_width);
|
||||||
} else if (type == json_type_string) {
|
} else if (type == json_type_string) {
|
||||||
/* the width will be calculated when rendering */
|
/* 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");
|
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;
|
double ws_vertical_padding = config->status_padding * output->scale;
|
||||||
|
|
||||||
int width = text_width;
|
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) {
|
if (width < block->min_width) {
|
||||||
width = block->min_width;
|
width = block->min_width;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue