]> git.0d.be Git - empathy.git/commitdiff
Make calling empathy without options idempotent
authorSjoerd Simons <sjoerd.simons@collabora.co.uk>
Thu, 15 Oct 2009 23:19:50 +0000 (19:19 -0400)
committerSjoerd Simons <sjoerd.simons@collabora.co.uk>
Mon, 19 Oct 2009 10:06:33 +0000 (11:06 +0100)
When empathy is started without any accounts the account assistant shows up,
but if empathy is already running and is called again nothing happens. Fixed
by always showing the account assistant if empathy is called and there are
no non-salut accounts

src/empathy.c

index c12a20bd54f0c07769234a170b84d1dd8ebc0035..93d0994a2588cf002540ae560c666abf7e589eb1 100644 (file)
@@ -442,7 +442,8 @@ migrate_config_to_xdg_dir (void)
 }
 
 static void
-do_show_accounts_ui (GtkWindow *window, EmpathyAccountManager *manager)
+do_show_accounts_ui (GtkWindow *window,
+    EmpathyAccountManager *manager)
 {
 
   GtkWidget *ui;
@@ -469,17 +470,24 @@ account_manager_ready_for_accounts_cb (EmpathyAccountManager *manager,
 }
 
 static void
-show_accounts_ui (GtkWindow *window)
+show_accounts_ui (GtkWindow *window,
+    gboolean force)
 {
   EmpathyAccountManager *manager;
 
   manager = empathy_account_manager_dup_singleton ();
   if (empathy_account_manager_is_ready (manager))
     {
-      do_show_accounts_ui (window, manager);
+      if (force)
+        do_show_accounts_ui (window, manager);
+      else
+        maybe_show_account_assistant ();
     }
-  else
+  else if (force)
     {
+      /* Only if we we're forced to show the widget connect to ready, otherwise
+       * the initial readyness will cause the accounts ui to be shown when
+       * needed */
       g_signal_connect (manager, "notify::ready",
         G_CALLBACK (account_manager_ready_for_accounts_cb), window);
     }
@@ -501,10 +509,17 @@ unique_app_message_cb (UniqueApp *unique_app,
 
   if (command == COMMAND_ACCOUNTS_DIALOG)
     {
-      show_accounts_ui (window);
+      show_accounts_ui (window, TRUE);
     }
   else
     {
+      /* We're requested to show stuff again, disable the start hidden global
+       * in case the accounts wizard wants to pop up.
+       */
+      start_hidden = FALSE;
+
+      show_accounts_ui (window, FALSE);
+
       gtk_window_set_screen (GTK_WINDOW (window),
           unique_message_data_get_screen (data));
       gtk_window_set_startup_id (GTK_WINDOW (window),
@@ -902,7 +917,7 @@ main (int argc, char *argv[])
   if (account_dialog_only)
     {
       account_manager = empathy_account_manager_dup_singleton ();
-      show_accounts_ui (NULL);
+      show_accounts_ui (NULL, TRUE);
 
       gtk_main ();