commit 6622f5e21715090d556e8ac5a8a929693a342974
parent 223fe0d4fcdb16cdb911176df76bb4bf75683735
Author: blinxen <h-k-81@hotmail.com>
Date: Mon, 13 Oct 2025 21:28:33 +0200
Close dbus menu when unregistering sni
Diffstat:
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/include/swaybar/tray/dbusmenu.h b/include/swaybar/tray/dbusmenu.h
@@ -8,6 +8,8 @@ void swaybar_dbusmenu_open(struct swaybar_sni *sni,
struct swaybar_output *output, struct swaybar_seat *seat, uint32_t serial,
int x, int y);
+void swaybar_dbusmenu_destroy(struct swaybar_dbusmenu *menu);
+
bool dbusmenu_pointer_button(void *data, struct wl_pointer *wl_pointer,
uint32_t serial, uint32_t time_, uint32_t button, uint32_t state);
diff --git a/swaybar/tray/host.c b/swaybar/tray/host.c
@@ -7,6 +7,7 @@
#include "swaybar/tray/host.h"
#include "swaybar/tray/item.h"
#include "swaybar/tray/tray.h"
+#include "swaybar/tray/dbusmenu.h"
#include "list.h"
#include "log.h"
#include "stringop.h"
@@ -55,7 +56,9 @@ static int handle_sni_unregistered(sd_bus_message *msg, void *data,
int idx = list_seq_find(tray->items, cmp_sni_id, id);
if (idx != -1) {
sway_log(SWAY_INFO, "Unregistering Status Notifier Item '%s'", id);
- destroy_sni(tray->items->items[idx]);
+ struct swaybar_sni *sni = tray->items->items[idx];
+ swaybar_dbusmenu_destroy(sni->tray->menu);
+ destroy_sni(sni);
list_del(tray->items, idx);
set_bar_dirty(tray->bar);
}