packages/libappindicator/libappindicator-fix-unfallback.patch

70 lines
2.2 KiB
Diff

=== modified file 'src/app-indicator.c'
--- src/app-indicator.c 2020-07-03 10:12:45 +0000
+++ src/app-indicator.c 2024-07-15 04:37:39 +0000
@@ -101,6 +101,7 @@
/* StatusNotifierWatcher */
GDBusProxy *watcher_proxy;
guint watcher_id;
+ gboolean is_host_registered;
/* Might be used */
IndicatorDesktopShortcuts * shorties;
@@ -216,18 +217,16 @@
check_is_host_registered (AppIndicator *self)
{
GVariant *variant;
- gboolean is_host_registered;
variant = g_dbus_proxy_get_cached_property (self->priv->watcher_proxy,
"IsStatusNotifierHostRegistered");
- is_host_registered = FALSE;
if (variant != NULL) {
- is_host_registered = g_variant_get_boolean (variant);
+ self->priv->is_host_registered = g_variant_get_boolean (variant);
g_variant_unref (variant);
}
- if (!is_host_registered) {
+ if (!self->priv->is_host_registered) {
start_fallback_timer (self, FALSE);
return;
}
@@ -302,6 +301,7 @@
/* Emit the AppIndicator::connection-changed signal*/
g_signal_emit (self, signals[CONNECTION_CHANGED], 0, FALSE);
+ self->priv->is_host_registered = FALSE;
start_fallback_timer (self, FALSE);
}
@@ -720,6 +720,7 @@
(GBusNameAppearedCallback) name_appeared_handler,
(GBusNameVanishedCallback) name_vanished_handler,
self, NULL);
+ priv->is_host_registered = FALSE;
/* Start getting the session bus */
g_object_ref(self); /* ref for the bus creation callback */
@@ -1448,7 +1449,18 @@
/* Emit the AppIndicator::connection-changed signal*/
g_signal_emit (app, signals[CONNECTION_CHANGED], 0, TRUE);
- if (priv->status_icon) {
+ /* If no StatusNotifierHost is registered, don't do unfallback */
+ if (!priv->is_host_registered) {
+ g_object_unref(G_OBJECT(user_data));
+ return;
+ }
+
+ if (priv->fallback_timer != 0) {
+ g_source_remove (priv->fallback_timer);
+ priv->fallback_timer = 0;
+ }
+
+ if (priv->status_icon != NULL) {
AppIndicatorClass * class = APP_INDICATOR_GET_CLASS(app);
if (class->unfallback != NULL) {
class->unfallback(app, priv->status_icon);