diff options
author | progandy <code@progandy> | 2015-12-22 17:54:38 +0100 |
---|---|---|
committer | progandy <code@progandy> | 2015-12-22 17:54:38 +0100 |
commit | d060d0a39f977cf4e74fe3d9a747ee717ad733ba (patch) | |
tree | 0d3ceafd2614e4a06b0ac624e73df7b76f79bb73 /swaybar/main.c | |
parent | swaybar: Improve i3bar proto implementation (diff) | |
download | sway-d060d0a39f977cf4e74fe3d9a747ee717ad733ba.tar.gz sway-d060d0a39f977cf4e74fe3d9a747ee717ad733ba.tar.zst sway-d060d0a39f977cf4e74fe3d9a747ee717ad733ba.zip |
swaybar: add a visible separator between elements
Diffstat (limited to 'swaybar/main.c')
-rw-r--r-- | swaybar/main.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/swaybar/main.c b/swaybar/main.c index 1ad5b1cd..a4b757a5 100644 --- a/swaybar/main.c +++ b/swaybar/main.c | |||
@@ -395,16 +395,29 @@ void render() { | |||
395 | cairo_move_to(window->cairo, window->width - margin - width, margin); | 395 | cairo_move_to(window->cairo, window->width - margin - width, margin); |
396 | pango_printf(window, "%s", line); | 396 | pango_printf(window, "%s", line); |
397 | } else if (protocol == I3BAR && status_line) { | 397 | } else if (protocol == I3BAR && status_line) { |
398 | int i; | 398 | int i, blockpos; |
399 | int moved = 0; | 399 | int moved = 0; |
400 | bool corner = true; | ||
400 | for (i = status_line->length - 1; i >= 0; --i) { | 401 | for (i = status_line->length - 1; i >= 0; --i) { |
401 | struct status_block *block = status_line->items[i]; | 402 | struct status_block *block = status_line->items[i]; |
402 | if (block->full_text) { | 403 | if (block->full_text && block->full_text[0]) { |
403 | get_text_size(window, &width, &height, "%s", block->full_text); | 404 | get_text_size(window, &width, &height, "%s", block->full_text); |
404 | moved += width + block->separator_block_width; | 405 | moved += width + block->separator_block_width; |
405 | cairo_move_to(window->cairo, window->width - margin - moved, margin); | 406 | blockpos = window->width - margin - moved; |
407 | cairo_move_to(window->cairo, blockpos, margin); | ||
406 | cairo_set_source_u32(window->cairo, block->color); | 408 | cairo_set_source_u32(window->cairo, block->color); |
407 | pango_printf(window, "%s", block->full_text); | 409 | pango_printf(window, "%s", block->full_text); |
410 | if (corner) { | ||
411 | corner = false; | ||
412 | } else if (block->separator) { | ||
413 | cairo_set_source_u32(window->cairo, colors.separator); | ||
414 | cairo_set_line_width(window->cairo, 1); | ||
415 | cairo_move_to(window->cairo, blockpos + width | ||
416 | + block->separator_block_width/2, margin); | ||
417 | cairo_line_to(window->cairo, blockpos + width | ||
418 | + block->separator_block_width/2, window->height - margin); | ||
419 | cairo_stroke(window->cairo); | ||
420 | } | ||
408 | } | 421 | } |
409 | } | 422 | } |
410 | } | 423 | } |
@@ -512,7 +525,7 @@ void parse_json(const char *text) { | |||
512 | new->color = parse_color(json_object_get_string(color)); | 525 | new->color = parse_color(json_object_get_string(color)); |
513 | } | 526 | } |
514 | else { | 527 | else { |
515 | new->color = 0xFFFFFFFF; | 528 | new->color = colors.statusline; |
516 | } | 529 | } |
517 | 530 | ||
518 | if (min_width) { | 531 | if (min_width) { |