summaryrefslogtreecommitdiff
path: root/swaybar/render.c
diff options
context:
space:
mode:
authorIan Fan <[email protected]>2018-10-12 20:32:48 +0100
committerIan Fan <[email protected]>2018-10-14 13:33:12 +0100
commitbcc61e5147fb57a3b4bfb9a2a33065a0cf6da67b (patch)
tree873a09eca473242c15299ea1053966e9d163f6c6 /swaybar/render.c
parent55ca16f2d83f4d7e14635ac4de3eb67ee2a0787e (diff)
swaybar: handle mode/hidden_state changes
As well as adding the hidden_state property to the bar config struct, this commit handles barconfig_update events when the mode or hidden_state changes, and uses a new function determine_bar_visibility to hide or show the bar as required, using, respectively, destroy_layer_surface, which is also newly added, and add_layer_surface, which has been changed to allow dynamically adding the surface.
Diffstat (limited to 'swaybar/render.c')
-rw-r--r--swaybar/render.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/swaybar/render.c b/swaybar/render.c
index d226ba32..670630cf 100644
--- a/swaybar/render.c
+++ b/swaybar/render.c
@@ -494,6 +494,9 @@ static const struct wl_callback_listener output_frame_listener = {
void render_frame(struct swaybar_output *output) {
assert(output->surface != NULL);
+ if (!output->layer_surface) {
+ return;
+ }
free_hotspots(&output->hotspots);
@@ -519,7 +522,9 @@ void render_frame(struct swaybar_output *output) {
if (height != output->height) {
// Reconfigure surface
zwlr_layer_surface_v1_set_size(output->layer_surface, 0, height);
- zwlr_layer_surface_v1_set_exclusive_zone(output->layer_surface, height);
+ if (strcmp(output->bar->config->mode, "dock") == 0) {
+ zwlr_layer_surface_v1_set_exclusive_zone(output->layer_surface, height);
+ }
// TODO: this could infinite loop if the compositor assigns us a
// different height than what we asked for
wl_surface_commit(output->surface);