]> git.0d.be Git - empathy.git/commitdiff
Remove EmpathyAccountsPlugin's requirement that it be a singleton, so we can reset...
authorTravis Reitter <treitter@gmail.com>
Tue, 2 Mar 2010 17:06:12 +0000 (09:06 -0800)
committerTravis Reitter <treitter@gmail.com>
Tue, 2 Mar 2010 17:16:52 +0000 (09:16 -0800)
src/cc-empathy-accounts-page.c
src/empathy-accounts-dialog.c

index 15c7e5689767a0446e0c953e7589142fb4470d27..10c333ff3551bcf4b308b2bc15175610acce1a6a 100644 (file)
@@ -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
index a3a3b7e887d14fd4a5d24b6bd0edcc7aed0a7091..18f976b35fa8d1f840557ee1216dd5fad06a0d07 100644 (file)
@@ -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;