aboutsummaryrefslogtreecommitdiffstats
path: root/include/swaybar
diff options
context:
space:
mode:
authorLibravatar Joan Bruguera <joanbrugueram@gmail.com>2021-09-18 22:21:22 +0200
committerLibravatar Simon Ser <contact@emersion.fr>2022-11-26 10:17:53 +0100
commit94b69acf0d7b26ee5af2172300cb18473508da76 (patch)
tree1b26242344968929fc2698b49b12478eb9fe4fae /include/swaybar
parentswaybar: Prioritize hotspot events to bar bindings (diff)
downloadsway-94b69acf0d7b26ee5af2172300cb18473508da76.tar.gz
sway-94b69acf0d7b26ee5af2172300cb18473508da76.tar.zst
sway-94b69acf0d7b26ee5af2172300cb18473508da76.zip
swaybar: Make hotspots block bar release bindings
The previous commit prioritized hotspots before bar bindings for press events, which matches i3's behaviour. However, since hotspots don't need to do any processing on release events, those were not handled, and simply fell through to `bindsym --release` bar bindings (if any). This is counter-intuitive, and doesn't match i3's behaviour. Instead in case a hotspot handles the press event, it should also handle the release event, doing nothing, but blocking the event from triggering a --release bar binding. E.g., in Sway, without this commit, this config. shows a text on tray clicks: bar { # ... bindsym --release button1 exec swaynag -m I_got_the_release_event. } But the same configuration in i3 (with i3-nagbar) doesn't show the text. Signed-off-by: Joan Bruguera <joanbrugueram@gmail.com>
Diffstat (limited to 'include/swaybar')
-rw-r--r--include/swaybar/i3bar.h2
-rw-r--r--include/swaybar/input.h2
2 files changed, 2 insertions, 2 deletions
diff --git a/include/swaybar/i3bar.h b/include/swaybar/i3bar.h
index 1aec6d6c..dced2a6c 100644
--- a/include/swaybar/i3bar.h
+++ b/include/swaybar/i3bar.h
@@ -30,6 +30,6 @@ void i3bar_block_unref(struct i3bar_block *block);
30bool i3bar_handle_readable(struct status_line *status); 30bool i3bar_handle_readable(struct status_line *status);
31enum hotspot_event_handling i3bar_block_send_click(struct status_line *status, 31enum hotspot_event_handling i3bar_block_send_click(struct status_line *status,
32 struct i3bar_block *block, double x, double y, double rx, double ry, 32 struct i3bar_block *block, double x, double y, double rx, double ry,
33 double w, double h, int scale, uint32_t button); 33 double w, double h, int scale, uint32_t button, bool released);
34 34
35#endif 35#endif
diff --git a/include/swaybar/input.h b/include/swaybar/input.h
index e8735d88..8ea88a69 100644
--- a/include/swaybar/input.h
+++ b/include/swaybar/input.h
@@ -49,7 +49,7 @@ struct swaybar_hotspot {
49 int x, y, width, height; 49 int x, y, width, height;
50 enum hotspot_event_handling (*callback)(struct swaybar_output *output, 50 enum hotspot_event_handling (*callback)(struct swaybar_output *output,
51 struct swaybar_hotspot *hotspot, double x, double y, uint32_t button, 51 struct swaybar_hotspot *hotspot, double x, double y, uint32_t button,
52 void *data); 52 bool released, void *data);
53 void (*destroy)(void *data); 53 void (*destroy)(void *data);
54 void *data; 54 void *data;
55}; 55};