summaryrefslogtreecommitdiff
path: root/gtk/gtkmodule.c
diff options
context:
space:
mode:
authorGustavo J. A. M. Carneiro <gcarneiro@src.gnome.org>2004-06-13 16:23:45 +0000
committerGustavo J. A. M. Carneiro <gcarneiro@src.gnome.org>2004-06-13 16:23:45 +0000
commita207d355a29f3b39dbdb81da99bbb7c4e31e4176 (patch)
tree59a35b42f0a468be2c8b69906615a2af3f9dd214 /gtk/gtkmodule.c
parent2683869e5ae53a35b1526852214fec3f23fa3333 (diff)
downloadpygtk-a207d355a29f3b39dbdb81da99bbb7c4e31e4176.tar.gz
Fix Bug 122569: gtk.Window derived class segfaults
Diffstat (limited to 'gtk/gtkmodule.c')
-rw-r--r--gtk/gtkmodule.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gtk/gtkmodule.c b/gtk/gtkmodule.c
index 22ec993f..a6acb336 100644
--- a/gtk/gtkmodule.c
+++ b/gtk/gtkmodule.c
@@ -50,6 +50,15 @@ static struct _PyGtk_FunctionStruct functions = {
};
static void
+sink_gtkwindow(GObject *object)
+{
+ if (object->ref_count == 1
+ && GTK_WINDOW(object)->has_user_ref_count) {
+ g_object_ref(object);
+ }
+}
+
+static void
sink_gtkobject(GObject *object)
{
if (GTK_OBJECT_FLOATING(object)) {
@@ -90,6 +99,7 @@ init_gtk(void)
init_pygobject();
g_assert(pygobject_register_class != NULL);
+ pygobject_register_sinkfunc(GTK_TYPE_WINDOW, sink_gtkwindow);
pygobject_register_sinkfunc(GTK_TYPE_OBJECT, sink_gtkobject);
/* set the default python encoding to utf-8 */