aboutsummaryrefslogtreecommitdiffstats
path: root/swaybar/render.c
diff options
context:
space:
mode:
authorLibravatar Brian Ashworth <bosrsf04@gmail.com>2018-12-11 23:51:29 -0500
committerLibravatar emersion <contact@emersion.fr>2018-12-12 10:17:39 +0100
commit8b4fe7dd15a36792399f9de555ee3c47aaeb72a4 (patch)
tree9437cd7003fc76cb2b3c68c2dc699ba6c60b85fb /swaybar/render.c
parentKeep focus when destroying containers on nonvis ws (diff)
downloadsway-8b4fe7dd15a36792399f9de555ee3c47aaeb72a4.tar.gz
sway-8b4fe7dd15a36792399f9de555ee3c47aaeb72a4.tar.zst
sway-8b4fe7dd15a36792399f9de555ee3c47aaeb72a4.zip
swaybar: handle block->urgent
When `block->urgent` is set, use the urgent colors. This matches i3bar's behavior. Previously, swaybar just ignored the property. This also adds in rendering for right borders, which was missing.
Diffstat (limited to 'swaybar/render.c')
-rw-r--r--swaybar/render.c36
1 files changed, 23 insertions, 13 deletions
diff --git a/swaybar/render.c b/swaybar/render.c
index 481e0293..d78d7c90 100644
--- a/swaybar/render.c
+++ b/swaybar/render.c
@@ -153,11 +153,11 @@ static uint32_t render_status_block(cairo_t *cairo,
153 } 153 }
154 154
155 *x -= width; 155 *x -= width;
156 if (block->border && block->border_left > 0) { 156 if ((block->border || block->urgent) && block->border_left > 0) {
157 *x -= (block->border_left + margin); 157 *x -= (block->border_left + margin);
158 block_width += block->border_left + margin; 158 block_width += block->border_left + margin;
159 } 159 }
160 if (block->border && block->border_right > 0) { 160 if ((block->border || block->urgent) && block->border_right > 0) {
161 *x -= (block->border_right + margin); 161 *x -= (block->border_right + margin);
162 block_width += block->border_right + margin; 162 block_width += block->border_right + margin;
163 } 163 }
@@ -196,29 +196,38 @@ static uint32_t render_status_block(cairo_t *cairo,
196 } 196 }
197 197
198 double pos = *x; 198 double pos = *x;
199 if (block->background) { 199
200 cairo_set_source_u32(cairo, block->background); 200 uint32_t bg_color = block->urgent
201 ? config->colors.urgent_workspace.background : block->background;
202 if (bg_color) {
203 cairo_set_source_u32(cairo, bg_color);
201 cairo_rectangle(cairo, pos - 0.5 * output->scale, 204 cairo_rectangle(cairo, pos - 0.5 * output->scale,
202 output->scale, width, height); 205 output->scale, width, height);
203 cairo_fill(cairo); 206 cairo_fill(cairo);
204 } 207 }
205 208
206 if (block->border && block->border_top > 0) { 209 uint32_t border_color = block->urgent
207 render_sharp_line(cairo, block->border, 210 ? config->colors.urgent_workspace.border : block->border;
211 if (border_color && block->border_top > 0) {
212 render_sharp_line(cairo, border_color,
208 pos - 0.5 * output->scale, output->scale, 213 pos - 0.5 * output->scale, output->scale,
209 block_width, block->border_top); 214 text_width, block->border_top);
210 } 215 }
211 if (block->border && block->border_bottom > 0) { 216 if (border_color && block->border_bottom > 0) {
212 render_sharp_line(cairo, block->border, 217 render_sharp_line(cairo, border_color,
213 pos - 0.5 * output->scale, 218 pos - 0.5 * output->scale,
214 height - output->scale - block->border_bottom, 219 height - output->scale - block->border_bottom,
215 block_width, block->border_bottom); 220 text_width, block->border_bottom);
216 } 221 }
217 if (block->border != 0 && block->border_left > 0) { 222 if (border_color != 0 && block->border_left > 0) {
218 render_sharp_line(cairo, block->border, 223 render_sharp_line(cairo, border_color,
219 pos - 0.5 * output->scale, output->scale, 224 pos - 0.5 * output->scale, output->scale,
220 block->border_left, height); 225 block->border_left, height);
221 pos += block->border_left + margin; 226 }
227 if (border_color != 0 && block->border_right > 0) {
228 render_sharp_line(cairo, border_color,
229 pos - 0.5 * output->scale + text_width, output->scale,
230 block->border_right, height);
222 } 231 }
223 232
224 double offset = 0; 233 double offset = 0;
@@ -231,6 +240,7 @@ static uint32_t render_status_block(cairo_t *cairo,
231 } 240 }
232 cairo_move_to(cairo, offset, height / 2.0 - text_height / 2.0); 241 cairo_move_to(cairo, offset, height / 2.0 - text_height / 2.0);
233 uint32_t color = block->color ? *block->color : config->colors.statusline; 242 uint32_t color = block->color ? *block->color : config->colors.statusline;
243 color = block->urgent ? config->colors.urgent_workspace.text : color;
234 cairo_set_source_u32(cairo, color); 244 cairo_set_source_u32(cairo, color);
235 pango_printf(cairo, config->font, output->scale, 245 pango_printf(cairo, config->font, output->scale,
236 block->markup, "%s", block->full_text); 246 block->markup, "%s", block->full_text);