[gitg] Move config destruction to dialog finalize



commit ff83aa6ffa7eb941343d2d9a41a5f106bec60e7a
Author: Jesse van den Kieboom <jesse vandenkieboom epfl ch>
Date:   Sat Jan 8 13:59:09 2011 +0100

    Move config destruction to dialog finalize
    
    This fixes a problem when closing the dialog while one of the config entries
    has focus. The config object would be destroyed in dispose, before the
    focus-out callback had been called.

 gitg/gitg-preferences-dialog.c |   17 +++++++++++------
 1 files changed, 11 insertions(+), 6 deletions(-)
---
diff --git a/gitg/gitg-preferences-dialog.c b/gitg/gitg-preferences-dialog.c
index a9ef83e..60b0376 100644
--- a/gitg/gitg-preferences-dialog.c
+++ b/gitg/gitg-preferences-dialog.c
@@ -98,12 +98,6 @@ gitg_preferences_dialog_dispose (GObject *object)
 {
 	GitgPreferencesDialog *dialog = GITG_PREFERENCES_DIALOG (object);
 
-	if (dialog->priv->config)
-	{
-		g_object_unref (dialog->priv->config);
-		dialog->priv->config = NULL;
-	}
-
 	if (dialog->priv->message_settings)
 	{
 		g_object_unref (dialog->priv->message_settings);
@@ -126,11 +120,22 @@ gitg_preferences_dialog_dispose (GObject *object)
 }
 
 static void
+gitg_preferences_dialog_finalize (GObject *object)
+{
+	GitgPreferencesDialog *dialog = GITG_PREFERENCES_DIALOG (object);
+
+	g_object_unref (dialog->priv->config);
+
+	G_OBJECT_CLASS (gitg_preferences_dialog_parent_class)->finalize (object);
+}
+
+static void
 gitg_preferences_dialog_class_init(GitgPreferencesDialogClass *klass)
 {
 	GObjectClass *object_class = G_OBJECT_CLASS(klass);
 
 	object_class->dispose = gitg_preferences_dialog_dispose;
+	object_class->finalize = gitg_preferences_dialog_finalize;
 
 	g_type_class_add_private(object_class, sizeof(GitgPreferencesDialogPrivate));
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]