]> Pileus Git - ~andy/gtk/commitdiff
Bug 551699 – gtk_scrolled_window_destroy() is broken
authorBjörn Lindqvist <bjourne@gmail.com>
Wed, 10 Sep 2008 20:21:59 +0000 (20:21 +0000)
committerBjörn Lindqvist <bjornl@src.gnome.org>
Wed, 10 Sep 2008 20:21:59 +0000 (20:21 +0000)
2008-09-10  Björn Lindqvist  <bjourne@gmail.com>

Bug 551699 – gtk_scrolled_window_destroy() is broken

* gtk/gtkscrolledwindow.c (gtk_scrolled_window_destroy,
gtk_scrolled_window_finalize): Check that the [hv]scrollbar
attributes are not-NULL before destroying and unparenting them.

svn path=/trunk/; revision=21341

ChangeLog
gtk/gtkscrolledwindow.c

index 9df86e399112da2f405fe3d6d82e1e6e628079ca..fc8553613422a1131c1a6e2e9c0a1211b3b201d6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-09-10  Björn Lindqvist  <bjourne@gmail.com>
+
+       Bug 551699 – gtk_scrolled_window_destroy() is broken
+
+       * gtk/gtkscrolledwindow.c (gtk_scrolled_window_destroy,
+       gtk_scrolled_window_finalize): Check that the [hv]scrollbar
+       attributes are not-NULL before destroying and unparenting them.
+
 2008-09-10  Simos Xenitellis  <simos@gnome.org>
 
        Bug 550676 – Memory leak, update keyboard layout data structure 
index 5040337d6e20cd7dc3c4c860ee7384a99f5af200..3f8d7175822350db30e5a241410c19a8261b22a9 100644 (file)
@@ -100,7 +100,6 @@ enum
 };
 
 static void     gtk_scrolled_window_destroy            (GtkObject         *object);
-static void     gtk_scrolled_window_finalize           (GObject           *object);
 static void     gtk_scrolled_window_set_property       (GObject           *object,
                                                         guint              prop_id,
                                                         const GValue      *value,
@@ -192,7 +191,6 @@ gtk_scrolled_window_class_init (GtkScrolledWindowClass *class)
   widget_class = (GtkWidgetClass*) class;
   container_class = (GtkContainerClass*) class;
 
-  gobject_class->finalize = gtk_scrolled_window_finalize;
   gobject_class->set_property = gtk_scrolled_window_set_property;
   gobject_class->get_property = gtk_scrolled_window_get_property;
 
@@ -786,25 +784,24 @@ gtk_scrolled_window_destroy (GtkObject *object)
 {
   GtkScrolledWindow *scrolled_window = GTK_SCROLLED_WINDOW (object);
 
-  gtk_widget_unparent (scrolled_window->hscrollbar);
-  gtk_widget_unparent (scrolled_window->vscrollbar);
-  gtk_widget_destroy (scrolled_window->hscrollbar);
-  gtk_widget_destroy (scrolled_window->vscrollbar);
+  if (scrolled_window->hscrollbar)
+    {
+      gtk_widget_unparent (scrolled_window->hscrollbar);
+      gtk_widget_destroy (scrolled_window->hscrollbar);
+      g_object_unref (scrolled_window->hscrollbar);
+      scrolled_window->hscrollbar = NULL;
+    }
+  if (scrolled_window->vscrollbar)
+    {
+      gtk_widget_unparent (scrolled_window->vscrollbar);
+      gtk_widget_destroy (scrolled_window->vscrollbar);
+      g_object_unref (scrolled_window->vscrollbar);
+      scrolled_window->vscrollbar = NULL;
+    }
 
   GTK_OBJECT_CLASS (gtk_scrolled_window_parent_class)->destroy (object);
 }
 
-static void
-gtk_scrolled_window_finalize (GObject *object)
-{
-  GtkScrolledWindow *scrolled_window = GTK_SCROLLED_WINDOW (object);
-
-  g_object_unref (scrolled_window->hscrollbar);
-  g_object_unref (scrolled_window->vscrollbar);
-
-  G_OBJECT_CLASS (gtk_scrolled_window_parent_class)->finalize (object);
-}
-
 static void
 gtk_scrolled_window_set_property (GObject      *object,
                                  guint         prop_id,