From 52d67df161e27a893bc24a13a50d86bf251f5ad9 Mon Sep 17 00:00:00 2001 From: Travis Reitter Date: Tue, 2 Mar 2010 09:06:12 -0800 Subject: Remove EmpathyAccountsPlugin's requirement that it be a singleton, so we can reset the embedded control panel to a sane state every time we open it. --- src/cc-empathy-accounts-page.c | 26 +++++++++++++++----------- src/empathy-accounts-dialog.c | 27 --------------------------- 2 files changed, 15 insertions(+), 38 deletions(-) (limited to 'src') diff --git a/src/cc-empathy-accounts-page.c b/src/cc-empathy-accounts-page.c index 15c7e5689..10c333ff3 100644 --- a/src/cc-empathy-accounts-page.c +++ b/src/cc-empathy-accounts-page.c @@ -54,20 +54,24 @@ page_pack_with_accounts_dialog (CcEmpathyAccountsPage *page) GtkWidget *content; GtkWidget *action_area; - if (!page->priv->accounts_window) + if (page->priv->accounts_window != NULL) { - page->priv->accounts_window = empathy_accounts_dialog_show (NULL, NULL); - gtk_widget_hide (page->priv->accounts_window); + gtk_widget_destroy (page->priv->accounts_window); + gtk_container_remove (GTK_CONTAINER (page), + gtk_bin_get_child (GTK_BIN (page))); + } - content = gtk_dialog_get_content_area ( - GTK_DIALOG (page->priv->accounts_window)); - action_area = gtk_dialog_get_action_area ( - GTK_DIALOG (page->priv->accounts_window)); - gtk_widget_set_no_show_all (action_area, TRUE); - gtk_widget_hide (action_area); + page->priv->accounts_window = empathy_accounts_dialog_show (NULL, NULL); + gtk_widget_hide (page->priv->accounts_window); - gtk_widget_reparent (content, GTK_WIDGET (page)); - } + content = gtk_dialog_get_content_area ( + GTK_DIALOG (page->priv->accounts_window)); + action_area = gtk_dialog_get_action_area ( + GTK_DIALOG (page->priv->accounts_window)); + gtk_widget_set_no_show_all (action_area, TRUE); + gtk_widget_hide (action_area); + + gtk_widget_reparent (content, GTK_WIDGET (page)); } static void diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c index a3a3b7e88..18f976b35 100644 --- a/src/empathy-accounts-dialog.c +++ b/src/empathy-accounts-dialog.c @@ -72,8 +72,6 @@ #define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyAccountsDialog) G_DEFINE_TYPE (EmpathyAccountsDialog, empathy_accounts_dialog, GTK_TYPE_DIALOG); -static EmpathyAccountsDialog *dialog_singleton = NULL; - typedef struct { GtkWidget *alignment_settings; GtkWidget *alignment_infobar; @@ -2147,30 +2145,6 @@ do_dispose (GObject *obj) G_OBJECT_CLASS (empathy_accounts_dialog_parent_class)->dispose (obj); } -static GObject * -do_constructor (GType type, - guint n_props, - GObjectConstructParam *props) -{ - GObject *retval; - - if (dialog_singleton) - { - retval = G_OBJECT (dialog_singleton); - } - else - { - retval = - G_OBJECT_CLASS (empathy_accounts_dialog_parent_class)->constructor - (type, n_props, props); - - dialog_singleton = EMPATHY_ACCOUNTS_DIALOG (retval); - g_object_add_weak_pointer (retval, (gpointer) &dialog_singleton); - } - - return retval; -} - static void do_get_property (GObject *object, guint property_id, @@ -2256,7 +2230,6 @@ empathy_accounts_dialog_class_init (EmpathyAccountsDialogClass *klass) GObjectClass *oclass = G_OBJECT_CLASS (klass); GParamSpec *param_spec; - oclass->constructor = do_constructor; oclass->dispose = do_dispose; oclass->constructed = do_constructed; oclass->set_property = do_set_property; -- cgit v1.2.3