diff options
author | Colomban Wendling <[email protected]> | 2017-03-25 00:00:47 +0100 |
---|---|---|
committer | Martin Wimpress <[email protected]> | 2017-03-24 23:00:47 +0000 |
commit | 2f5fb93bb06fd13e60d18b7b0bfcf0a0b13f2a47 (patch) | |
tree | 361da32ac8e3534686841aa0056015fac521fa54 /applets/notification_area/libstatus-notifier-watcher/gf-sn-watcher-v0.c | |
parent | 533b880f0d64cde423bc3279a401d9e04f80936e (diff) | |
download | mate-panel-2f5fb93bb06fd13e60d18b7b0bfcf0a0b13f2a47.tar.bz2 mate-panel-2f5fb93bb06fd13e60d18b7b0bfcf0a0b13f2a47.tar.xz |
status-notifier-watcher: Allow re-registration of registered items (#543)
The SNI specification doesn't explicitly state what should happen when
trying to register again an already registered item, so it would seem
only logical to forbid it. Unfortunately, libappindicator tries
re-registering pretty often, and even falls back to System Tray if it
fails. So in practice we need to be forgiving and pretend it's OK,
or we get a duplicate System Tray item for this one.
Fixes #539.
Diffstat (limited to 'applets/notification_area/libstatus-notifier-watcher/gf-sn-watcher-v0.c')
-rw-r--r-- | applets/notification_area/libstatus-notifier-watcher/gf-sn-watcher-v0.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/applets/notification_area/libstatus-notifier-watcher/gf-sn-watcher-v0.c b/applets/notification_area/libstatus-notifier-watcher/gf-sn-watcher-v0.c index 8e82c10f..3d3a97c7 100644 --- a/applets/notification_area/libstatus-notifier-watcher/gf-sn-watcher-v0.c +++ b/applets/notification_area/libstatus-notifier-watcher/gf-sn-watcher-v0.c @@ -284,10 +284,24 @@ gf_sn_watcher_v0_handle_register_item (GfSnWatcherV0Gen *object, if (watch != NULL) { + /* the specification doesn't explicitly state what should happen when + * trying to register the same item again, so it would make sense to + * forbid it. Unfortunately libappindicator tries re-registering pretty + * often, and even falls back to System Tray if it fails. + * So in practice we need to be forgiving and pretend it's OK. */ +#if 0 g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "Status Notifier Item with bus name '%s' and object path '%s' is already registered", bus_name, object_path); +#else + g_warning ("Status Notifier Item with bus name '%s' and object path '%s' is already registered", + bus_name, object_path); + /* FIXME: is it OK to simply ignore the request instead of removing the + * old one and adding the new one? I don't see the problem as + * they are identical, but...? */ + gf_sn_watcher_v0_gen_complete_register_item (object, invocation); +#endif return TRUE; } |