aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSjoerd Simons <sjoerd.simons@collabora.co.uk>2009-10-16 07:19:50 +0800
committerSjoerd Simons <sjoerd.simons@collabora.co.uk>2009-10-19 18:01:41 +0800
commitc0ea5c2be72209daa5984752de3ca3e8c090de19 (patch)
treeff7cc3ed3c591387f18e8fd9f25d333414d79cc4
parentd9f7cbe628bb7b36e58fcdb8666360568c464d2a (diff)
downloadgsoc2013-empathy-c0ea5c2be72209daa5984752de3ca3e8c090de19.tar
gsoc2013-empathy-c0ea5c2be72209daa5984752de3ca3e8c090de19.tar.gz
gsoc2013-empathy-c0ea5c2be72209daa5984752de3ca3e8c090de19.tar.bz2
gsoc2013-empathy-c0ea5c2be72209daa5984752de3ca3e8c090de19.tar.lz
gsoc2013-empathy-c0ea5c2be72209daa5984752de3ca3e8c090de19.tar.xz
gsoc2013-empathy-c0ea5c2be72209daa5984752de3ca3e8c090de19.tar.zst
gsoc2013-empathy-c0ea5c2be72209daa5984752de3ca3e8c090de19.zip
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
-rw-r--r--src/empathy.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/src/empathy.c b/src/empathy.c
index 0c8efdfa0..82f62dd16 100644
--- a/src/empathy.c
+++ b/src/empathy.c
@@ -451,7 +451,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;
@@ -478,17 +479,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);
}
@@ -510,10 +518,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),
@@ -890,7 +905,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 ();