aboutsummaryrefslogtreecommitdiffstats
path: root/swaybar/ipc.c
diff options
context:
space:
mode:
Diffstat (limited to 'swaybar/ipc.c')
-rw-r--r--swaybar/ipc.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/swaybar/ipc.c b/swaybar/ipc.c
index 1cc55b43..a096f01a 100644
--- a/swaybar/ipc.c
+++ b/swaybar/ipc.c
@@ -499,6 +499,13 @@ static bool handle_bar_state_update(struct swaybar *bar, json_object *event) {
499 json_object *visible_by_modifier; 499 json_object *visible_by_modifier;
500 json_object_object_get_ex(event, "visible_by_modifier", &visible_by_modifier); 500 json_object_object_get_ex(event, "visible_by_modifier", &visible_by_modifier);
501 bar->visible_by_modifier = json_object_get_boolean(visible_by_modifier); 501 bar->visible_by_modifier = json_object_get_boolean(visible_by_modifier);
502 if (bar->visible_by_modifier) {
503 // If the bar is visible by modifier, clear both visible by mode and
504 // urgency as modifier has precedence and the bar should be hidden
505 // again when it is no longer visible by modifier.
506 bar->visible_by_mode = false;
507 bar->visible_by_urgency = false;
508 }
502 return determine_bar_visibility(bar, false); 509 return determine_bar_visibility(bar, false);
503} 510}
504 511
@@ -578,6 +585,8 @@ bool handle_ipc_readable(struct swaybar *bar) {
578 const char *change = json_object_get_string(json_change); 585 const char *change = json_object_get_string(json_change);
579 free(bar->mode); 586 free(bar->mode);
580 bar->mode = strcmp(change, "default") != 0 ? strdup(change) : NULL; 587 bar->mode = strcmp(change, "default") != 0 ? strdup(change) : NULL;
588 bar->visible_by_mode = bar->mode != NULL;
589 determine_bar_visibility(bar, false);
581 } else { 590 } else {
582 sway_log(SWAY_ERROR, "failed to parse response"); 591 sway_log(SWAY_ERROR, "failed to parse response");
583 bar_is_dirty = false; 592 bar_is_dirty = false;