diff options
Diffstat (limited to 'swaybar/i3bar.c')
-rw-r--r-- | swaybar/i3bar.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/swaybar/i3bar.c b/swaybar/i3bar.c index 43e2fe2d..5c8b87a2 100644 --- a/swaybar/i3bar.c +++ b/swaybar/i3bar.c | |||
@@ -24,7 +24,6 @@ void i3bar_block_unref(struct i3bar_block *block) { | |||
24 | free(block->min_width_str); | 24 | free(block->min_width_str); |
25 | free(block->name); | 25 | free(block->name); |
26 | free(block->instance); | 26 | free(block->instance); |
27 | free(block->color); | ||
28 | free(block); | 27 | free(block); |
29 | } | 28 | } |
30 | } | 29 | } |
@@ -70,8 +69,11 @@ static void i3bar_parse_json(struct status_line *status, | |||
70 | block->short_text = short_text ? | 69 | block->short_text = short_text ? |
71 | strdup(json_object_get_string(short_text)) : NULL; | 70 | strdup(json_object_get_string(short_text)) : NULL; |
72 | if (color) { | 71 | if (color) { |
73 | block->color = malloc(sizeof(uint32_t)); | 72 | const char *hexstring = json_object_get_string(color); |
74 | *block->color = parse_color(json_object_get_string(color)); | 73 | block->color_set = parse_color(hexstring, &block->color); |
74 | if (!block->color_set) { | ||
75 | sway_log(SWAY_ERROR, "Invalid block color: %s", hexstring); | ||
76 | } | ||
75 | } | 77 | } |
76 | if (min_width) { | 78 | if (min_width) { |
77 | json_type type = json_object_get_type(min_width); | 79 | json_type type = json_object_get_type(min_width); |
@@ -98,10 +100,14 @@ static void i3bar_parse_json(struct status_line *status, | |||
98 | block->separator_block_width = separator_block_width ? | 100 | block->separator_block_width = separator_block_width ? |
99 | json_object_get_int(separator_block_width) : 9; | 101 | json_object_get_int(separator_block_width) : 9; |
100 | // Airblader features | 102 | // Airblader features |
101 | block->background = background ? | 103 | const char *hex = background ? json_object_get_string(background) : NULL; |
102 | parse_color(json_object_get_string(background)) : 0; | 104 | if (hex && !parse_color(hex, &block->background)) { |
103 | block->border = border ? | 105 | sway_log(SWAY_ERROR, "Ignoring invalid block background: %s", hex); |
104 | parse_color(json_object_get_string(border)) : 0; | 106 | } |
107 | hex = border ? json_object_get_string(border) : NULL; | ||
108 | if (hex && !parse_color(hex, &block->border)) { | ||
109 | sway_log(SWAY_ERROR, "Ignoring invalid block border: %s", hex); | ||
110 | } | ||
105 | block->border_top = border_top ? json_object_get_int(border_top) : 1; | 111 | block->border_top = border_top ? json_object_get_int(border_top) : 1; |
106 | block->border_bottom = border_bottom ? | 112 | block->border_bottom = border_bottom ? |
107 | json_object_get_int(border_bottom) : 1; | 113 | json_object_get_int(border_bottom) : 1; |