diff options
Diffstat (limited to 'swaybar/tray')
-rw-r--r-- | swaybar/tray/item.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/swaybar/tray/item.c b/swaybar/tray/item.c index 0cb5ee9d..1f18b8bb 100644 --- a/swaybar/tray/item.c +++ b/swaybar/tray/item.c | |||
@@ -385,13 +385,18 @@ static int cmp_sni_id(const void *item, const void *cmp_to) { | |||
385 | 385 | ||
386 | static enum hotspot_event_handling icon_hotspot_callback( | 386 | static enum hotspot_event_handling icon_hotspot_callback( |
387 | struct swaybar_output *output, struct swaybar_hotspot *hotspot, | 387 | struct swaybar_output *output, struct swaybar_hotspot *hotspot, |
388 | double x, double y, uint32_t button, void *data) { | 388 | double x, double y, uint32_t button, bool released, void *data) { |
389 | sway_log(SWAY_DEBUG, "Clicked on %s", (char *)data); | 389 | sway_log(SWAY_DEBUG, "Clicked on %s", (char *)data); |
390 | 390 | ||
391 | struct swaybar_tray *tray = output->bar->tray; | 391 | struct swaybar_tray *tray = output->bar->tray; |
392 | int idx = list_seq_find(tray->items, cmp_sni_id, data); | 392 | int idx = list_seq_find(tray->items, cmp_sni_id, data); |
393 | 393 | ||
394 | if (idx != -1) { | 394 | if (idx != -1) { |
395 | if (released) { | ||
396 | // Since we handle the pressed event, also handle the released event | ||
397 | // to block it from falling through to a binding in the bar | ||
398 | return HOTSPOT_IGNORE; | ||
399 | } | ||
395 | struct swaybar_sni *sni = tray->items->items[idx]; | 400 | struct swaybar_sni *sni = tray->items->items[idx]; |
396 | // guess global position since wayland doesn't expose it | 401 | // guess global position since wayland doesn't expose it |
397 | struct swaybar_config *config = tray->bar->config; | 402 | struct swaybar_config *config = tray->bar->config; |