dwlb

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 0a2f9a5e141cdaa5c658691043dcf28142934de9
parent 6242ad59bda381118e4a5cfcf2f1da7d18322862
Author: Janne Veteläinen <janne.vetelainen@elisanet.fi>
Date:   Fri, 26 Apr 2024 14:33:05 +0300

Register snitem correctly, when caller busname!=snitem busname

Diffstat:
Mstatusnotifierhost.c | 11++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/statusnotifierhost.c b/statusnotifierhost.c @@ -218,6 +218,7 @@ handle_method_call(GDBusConnection *conn, if (strcmp(method_name, "RegisterStatusNotifierItem") == 0) { const char *param; const char *busobj; + const char *registree_name; g_variant_get(parameters, "(&s)", &param); @@ -227,7 +228,12 @@ handle_method_call(GDBusConnection *conn, busobj = "/StatusNotifierItem"; } - register_statusnotifieritem(conn, sender, busobj, snhost); + if (g_str_has_prefix(param, ":") && strcmp(sender, param) != 0) + registree_name = param; + else + registree_name = sender; + + register_statusnotifieritem(conn, registree_name, busobj, snhost); g_dbus_method_invocation_return_value(invocation, NULL); } else { @@ -299,9 +305,7 @@ monitor_bus(GDBusConnection* conn, const char *name; const char *old_owner; const char *new_owner; - g_variant_get(params, "(&s&s&s)", &name, &old_owner, &new_owner); - if (strcmp(new_owner, "") == 0) { GSList *pmatch = g_slist_find_custom(snhost->trayitems, name, (GCompareFunc)find_snitem); if (pmatch) { @@ -311,6 +315,7 @@ monitor_bus(GDBusConnection* conn, g_timeout_add_seconds(2, (GSourceFunc)unregister_after_timeout, snitem); } } + } }