From 395532bc9175deaac84c5ebbea9e6fc2b215286f Mon Sep 17 00:00:00 2001 From: Sjoerd Simons Date: Thu, 15 Oct 2009 19:19:50 -0400 Subject: Make calling empathy without options idempotent 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 | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'src/empathy.c') diff --git a/src/empathy.c b/src/empathy.c index c12a20bd5..93d0994a2 100644 --- a/src/empathy.c +++ b/src/empathy.c @@ -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 (); -- cgit v1.2.3