aboutsummaryrefslogtreecommitdiff
path: root/libmessaging-menu/messaging-menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmessaging-menu/messaging-menu.c')
-rw-r--r--libmessaging-menu/messaging-menu.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/libmessaging-menu/messaging-menu.c b/libmessaging-menu/messaging-menu.c
index 8066b35..8a95b0a 100644
--- a/libmessaging-menu/messaging-menu.c
+++ b/libmessaging-menu/messaging-menu.c
@@ -102,6 +102,7 @@ struct _MessagingMenuApp
GDesktopAppInfo *appinfo;
int registered; /* -1 for unknown */
MessagingMenuStatus status;
+ gboolean status_set;
GSimpleActionGroup *source_actions;
GMenu *menu;
@@ -370,7 +371,8 @@ created_messages_service (GObject *source_object,
messaging_menu_app_register (app);
else if (app->registered == FALSE)
messaging_menu_app_unregister (app);
- messaging_menu_app_set_status (app, app->status);
+ if (app->status_set)
+ messaging_menu_app_set_status (app, app->status);
}
static void
@@ -410,7 +412,7 @@ static void
messaging_menu_app_init (MessagingMenuApp *app)
{
app->registered = -1;
- app->status = MESSAGING_MENU_STATUS_OFFLINE;
+ app->status_set = FALSE;
app->cancellable = g_cancellable_new ();
@@ -538,12 +540,14 @@ messaging_menu_app_set_status (MessagingMenuApp *app,
status <= MESSAGING_MENU_STATUS_OFFLINE);
app->status = status;
+ app->status_set = TRUE;
/* state will be synced right after connecting to the service */
if (!app->messages_service)
return;
indicator_messages_service_call_set_status (app->messages_service,
+ g_app_info_get_id (G_APP_INFO (app->appinfo)),
status_ids [status],
app->cancellable,
NULL, NULL);
@@ -577,8 +581,7 @@ global_status_changed (IndicatorMessagesService *service,
status = status_from_string (status_str);
g_return_if_fail (status >= 0);
- app->status = (MessagingMenuStatus)status;
- g_signal_emit (app, signals[STATUS_CHANGED], 0, app->status);
+ g_signal_emit (app, signals[STATUS_CHANGED], 0, status);
}
static void