From 72d258b32eddaae77992e30a127882cbaaab0be0 Mon Sep 17 00:00:00 2001 From: Sjoerd Simons Date: Tue, 18 Aug 2009 10:58:59 +0100 Subject: [PATCH] keep a ref on the selected account --- src/empathy-accounts-dialog.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c index 98d31b3b..f027eccc 100644 --- a/src/empathy-accounts-dialog.c +++ b/src/empathy-accounts-dialog.c @@ -1199,6 +1199,7 @@ accounts_dialog_cms_ready_cb (EmpathyConnectionManagers *cms, { accounts_dialog_set_selected_account (dialog, priv->initial_selection); + g_object_unref (priv->initial_selection); priv->initial_selection = NULL; } } @@ -1304,6 +1305,10 @@ do_dispose (GObject *obj) priv->cms = NULL; } + if (priv->initial_selection != NULL) + g_object_unref (priv->initial_selection); + priv->initial_selection = NULL; + G_OBJECT_CLASS (empathy_accounts_dialog_parent_class)->dispose (obj); } @@ -1488,13 +1493,16 @@ empathy_accounts_dialog_show (GtkWindow *parent, priv = GET_PRIV (dialog); - if (selected_account && empathy_connection_managers_is_ready (priv->cms)) - accounts_dialog_set_selected_account (dialog, selected_account); - else - /* save the selection to set it later when the cms - * becomes ready. - */ - priv->initial_selection = selected_account; + if (selected_account) + { + if (empathy_connection_managers_is_ready (priv->cms)) + accounts_dialog_set_selected_account (dialog, selected_account); + else + /* save the selection to set it later when the cms + * becomes ready. + */ + priv->initial_selection = g_object_ref (selected_account); + } gtk_window_present (GTK_WINDOW (priv->window)); -- 2.39.2