diff options
Diffstat (limited to 'swaybar/render.c')
-rw-r--r-- | swaybar/render.c | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/swaybar/render.c b/swaybar/render.c index 670e8e74..55f680ed 100644 --- a/swaybar/render.c +++ b/swaybar/render.c | |||
@@ -36,7 +36,8 @@ static uint32_t render_status_line_error(cairo_t *cairo, | |||
36 | cairo_set_source_u32(cairo, 0xFF0000FF); | 36 | cairo_set_source_u32(cairo, 0xFF0000FF); |
37 | 37 | ||
38 | int margin = 3 * output->scale; | 38 | int margin = 3 * output->scale; |
39 | int ws_vertical_padding = WS_VERTICAL_PADDING * output->scale; | 39 | double ws_vertical_padding = |
40 | output->bar->config->status_padding * output->scale; | ||
40 | 41 | ||
41 | char *font = output->bar->config->font; | 42 | char *font = output->bar->config->font; |
42 | int text_width, text_height; | 43 | int text_width, text_height; |
@@ -45,7 +46,8 @@ static uint32_t render_status_line_error(cairo_t *cairo, | |||
45 | 46 | ||
46 | uint32_t ideal_height = text_height + ws_vertical_padding * 2; | 47 | uint32_t ideal_height = text_height + ws_vertical_padding * 2; |
47 | uint32_t ideal_surface_height = ideal_height / output->scale; | 48 | uint32_t ideal_surface_height = ideal_height / output->scale; |
48 | if (output->height < ideal_surface_height) { | 49 | if (!output->bar->config->height && |
50 | output->height < ideal_surface_height) { | ||
49 | return ideal_surface_height; | 51 | return ideal_surface_height; |
50 | } | 52 | } |
51 | *x -= text_width + margin; | 53 | *x -= text_width + margin; |
@@ -72,12 +74,13 @@ static uint32_t render_status_line_text(cairo_t *cairo, | |||
72 | get_text_size(cairo, config->font, &text_width, &text_height, NULL, | 74 | get_text_size(cairo, config->font, &text_width, &text_height, NULL, |
73 | output->scale, config->pango_markup, "%s", text); | 75 | output->scale, config->pango_markup, "%s", text); |
74 | 76 | ||
75 | int ws_vertical_padding = WS_VERTICAL_PADDING * output->scale; | 77 | double ws_vertical_padding = config->status_padding * output->scale; |
76 | int margin = 3 * output->scale; | 78 | int margin = 3 * output->scale; |
77 | 79 | ||
78 | uint32_t ideal_height = text_height + ws_vertical_padding * 2; | 80 | uint32_t ideal_height = text_height + ws_vertical_padding * 2; |
79 | uint32_t ideal_surface_height = ideal_height / output->scale; | 81 | uint32_t ideal_surface_height = ideal_height / output->scale; |
80 | if (output->height < ideal_surface_height) { | 82 | if (!output->bar->config->height && |
83 | output->height < ideal_surface_height) { | ||
81 | return ideal_surface_height; | 84 | return ideal_surface_height; |
82 | } | 85 | } |
83 | 86 | ||
@@ -154,7 +157,7 @@ static uint32_t render_status_block(cairo_t *cairo, | |||
154 | output->scale, block->markup, "%s", block->full_text); | 157 | output->scale, block->markup, "%s", block->full_text); |
155 | 158 | ||
156 | int margin = 3 * output->scale; | 159 | int margin = 3 * output->scale; |
157 | double ws_vertical_padding = WS_VERTICAL_PADDING * 2 * output->scale; | 160 | double ws_vertical_padding = config->status_padding * output->scale; |
158 | 161 | ||
159 | int width = text_width; | 162 | int width = text_width; |
160 | if (width < block->min_width) { | 163 | if (width < block->min_width) { |
@@ -164,7 +167,8 @@ static uint32_t render_status_block(cairo_t *cairo, | |||
164 | double block_width = width; | 167 | double block_width = width; |
165 | uint32_t ideal_height = text_height + ws_vertical_padding * 2; | 168 | uint32_t ideal_height = text_height + ws_vertical_padding * 2; |
166 | uint32_t ideal_surface_height = ideal_height / output->scale; | 169 | uint32_t ideal_surface_height = ideal_height / output->scale; |
167 | if (output->height < ideal_surface_height) { | 170 | if (!output->bar->config->height && |
171 | output->height < ideal_surface_height) { | ||
168 | return ideal_surface_height; | 172 | return ideal_surface_height; |
169 | } | 173 | } |
170 | 174 | ||
@@ -186,7 +190,8 @@ static uint32_t render_status_block(cairo_t *cairo, | |||
186 | output->scale, false, "%s", config->sep_symbol); | 190 | output->scale, false, "%s", config->sep_symbol); |
187 | uint32_t _ideal_height = sep_height + ws_vertical_padding * 2; | 191 | uint32_t _ideal_height = sep_height + ws_vertical_padding * 2; |
188 | uint32_t _ideal_surface_height = _ideal_height / output->scale; | 192 | uint32_t _ideal_surface_height = _ideal_height / output->scale; |
189 | if (output->height < _ideal_surface_height) { | 193 | if (!output->bar->config->height && |
194 | output->height < _ideal_surface_height) { | ||
190 | return _ideal_surface_height; | 195 | return _ideal_surface_height; |
191 | } | 196 | } |
192 | if (sep_width > sep_block_width) { | 197 | if (sep_width > sep_block_width) { |
@@ -194,8 +199,8 @@ static uint32_t render_status_block(cairo_t *cairo, | |||
194 | } | 199 | } |
195 | } | 200 | } |
196 | *x -= sep_block_width; | 201 | *x -= sep_block_width; |
197 | } else { | 202 | } else if (config->status_edge_padding) { |
198 | *x -= margin; | 203 | *x -= config->status_edge_padding * output->scale; |
199 | } | 204 | } |
200 | 205 | ||
201 | uint32_t height = output->height * output->scale; | 206 | uint32_t height = output->height * output->scale; |
@@ -213,8 +218,8 @@ static uint32_t render_status_block(cairo_t *cairo, | |||
213 | } | 218 | } |
214 | 219 | ||
215 | double x_pos = *x; | 220 | double x_pos = *x; |
216 | double y_pos = WS_VERTICAL_PADDING * output->scale; | 221 | double y_pos = ws_vertical_padding; |
217 | double render_height = height - ws_vertical_padding + output->scale; | 222 | double render_height = height - ws_vertical_padding * 2; |
218 | 223 | ||
219 | uint32_t bg_color = block->urgent | 224 | uint32_t bg_color = block->urgent |
220 | ? config->colors.urgent_workspace.background : block->background; | 225 | ? config->colors.urgent_workspace.background : block->background; |
@@ -287,7 +292,7 @@ static uint32_t render_status_block(cairo_t *cairo, | |||
287 | static uint32_t render_status_line_i3bar(cairo_t *cairo, | 292 | static uint32_t render_status_line_i3bar(cairo_t *cairo, |
288 | struct swaybar_output *output, double *x) { | 293 | struct swaybar_output *output, double *x) { |
289 | uint32_t max_height = 0; | 294 | uint32_t max_height = 0; |
290 | bool edge = true; | 295 | bool edge = *x == output->width * output->scale; |
291 | struct i3bar_block *block; | 296 | struct i3bar_block *block; |
292 | wl_list_for_each(block, &output->bar->status->blocks, link) { | 297 | wl_list_for_each(block, &output->bar->status->blocks, link) { |
293 | uint32_t h = render_status_block(cairo, output, block, x, edge); | 298 | uint32_t h = render_status_block(cairo, output, block, x, edge); |
@@ -333,7 +338,8 @@ static uint32_t render_binding_mode_indicator(cairo_t *cairo, | |||
333 | uint32_t ideal_height = text_height + ws_vertical_padding * 2 | 338 | uint32_t ideal_height = text_height + ws_vertical_padding * 2 |
334 | + border_width * 2; | 339 | + border_width * 2; |
335 | uint32_t ideal_surface_height = ideal_height / output->scale; | 340 | uint32_t ideal_surface_height = ideal_height / output->scale; |
336 | if (output->height < ideal_surface_height) { | 341 | if (!output->bar->config->height && |
342 | output->height < ideal_surface_height) { | ||
337 | return ideal_surface_height; | 343 | return ideal_surface_height; |
338 | } | 344 | } |
339 | uint32_t width = text_width + ws_horizontal_padding * 2 + border_width * 2; | 345 | uint32_t width = text_width + ws_horizontal_padding * 2 + border_width * 2; |
@@ -399,7 +405,8 @@ static uint32_t render_workspace_button(cairo_t *cairo, | |||
399 | uint32_t ideal_height = ws_vertical_padding * 2 + text_height | 405 | uint32_t ideal_height = ws_vertical_padding * 2 + text_height |
400 | + border_width * 2; | 406 | + border_width * 2; |
401 | uint32_t ideal_surface_height = ideal_height / output->scale; | 407 | uint32_t ideal_surface_height = ideal_height / output->scale; |
402 | if (output->height < ideal_surface_height) { | 408 | if (!output->bar->config->height && |
409 | output->height < ideal_surface_height) { | ||
403 | return ideal_surface_height; | 410 | return ideal_surface_height; |
404 | } | 411 | } |
405 | 412 | ||
@@ -526,7 +533,7 @@ void render_frame(struct swaybar_output *output) { | |||
526 | cairo_restore(cairo); | 533 | cairo_restore(cairo); |
527 | uint32_t height = render_to_cairo(cairo, output); | 534 | uint32_t height = render_to_cairo(cairo, output); |
528 | int config_height = output->bar->config->height; | 535 | int config_height = output->bar->config->height; |
529 | if (config_height >= 0 && height < (uint32_t)config_height) { | 536 | if (config_height > 0) { |
530 | height = config_height; | 537 | height = config_height; |
531 | } | 538 | } |
532 | if (height != output->height || output->width == 0) { | 539 | if (height != output->height || output->width == 0) { |