aboutsummaryrefslogtreecommitdiffstats
path: root/swaybar/render.c
diff options
context:
space:
mode:
Diffstat (limited to 'swaybar/render.c')
-rw-r--r--swaybar/render.c37
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,
287static uint32_t render_status_line_i3bar(cairo_t *cairo, 292static 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) {