diff options
Diffstat (limited to 'swaybar/tray/item.c')
-rw-r--r-- | swaybar/tray/item.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/swaybar/tray/item.c b/swaybar/tray/item.c index 0833dcb9..9056331e 100644 --- a/swaybar/tray/item.c +++ b/swaybar/tray/item.c | |||
@@ -301,8 +301,15 @@ void destroy_sni(struct swaybar_sni *sni) { | |||
301 | } | 301 | } |
302 | 302 | ||
303 | static void handle_click(struct swaybar_sni *sni, int x, int y, | 303 | static void handle_click(struct swaybar_sni *sni, int x, int y, |
304 | enum x11_button button, int delta) { | 304 | uint32_t button, int delta) { |
305 | const char *method = sni->tray->bar->config->tray_bindings[button]; | 305 | const char *method = NULL; |
306 | struct tray_binding *binding = NULL; | ||
307 | wl_list_for_each(binding, &sni->tray->bar->config->tray_bindings, link) { | ||
308 | if (binding->button == button) { | ||
309 | method = binding->command; | ||
310 | break; | ||
311 | } | ||
312 | } | ||
306 | if (!method) { | 313 | if (!method) { |
307 | static const char *default_bindings[10] = { | 314 | static const char *default_bindings[10] = { |
308 | "nop", | 315 | "nop", |
@@ -316,7 +323,7 @@ static void handle_click(struct swaybar_sni *sni, int x, int y, | |||
316 | "nop", | 323 | "nop", |
317 | "nop" | 324 | "nop" |
318 | }; | 325 | }; |
319 | method = default_bindings[button]; | 326 | method = default_bindings[event_to_x11_button(button)]; |
320 | } | 327 | } |
321 | if (strcmp(method, "nop") == 0) { | 328 | if (strcmp(method, "nop") == 0) { |
322 | return; | 329 | return; |
@@ -345,7 +352,7 @@ static int cmp_sni_id(const void *item, const void *cmp_to) { | |||
345 | 352 | ||
346 | static enum hotspot_event_handling icon_hotspot_callback( | 353 | static enum hotspot_event_handling icon_hotspot_callback( |
347 | struct swaybar_output *output, struct swaybar_hotspot *hotspot, | 354 | struct swaybar_output *output, struct swaybar_hotspot *hotspot, |
348 | int x, int y, enum x11_button button, void *data) { | 355 | int x, int y, uint32_t button, void *data) { |
349 | wlr_log(WLR_DEBUG, "Clicked on %s", (char *)data); | 356 | wlr_log(WLR_DEBUG, "Clicked on %s", (char *)data); |
350 | 357 | ||
351 | struct swaybar_tray *tray = output->bar->tray; | 358 | struct swaybar_tray *tray = output->bar->tray; |