70 lines
2.2 KiB
Diff
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);
|
|
|