summaryrefslogtreecommitdiff
path: root/gtk/gtkwidget.c
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2015-03-16 13:45:03 +0100
committerCarlos Garnacho <carlosg@gnome.org>2015-03-16 16:22:25 +0100
commitf5f6ad99819117d18b51e5db047437be24267fe0 (patch)
tree3e220e4364c0c19f00f14216d704f6998d7dbc06 /gtk/gtkwidget.c
parent2e272106ef31bf839ed73d20a95c51fcccff8c76 (diff)
downloadgtk+-f5f6ad99819117d18b51e5db047437be24267fe0.tar.gz
widget: Take a ref during ::unmap emission
This ensures the widget data stays live long enough to perform invariants check after emission if the widget happens to be destroyed on a callback. https://bugzilla.gnome.org/show_bug.cgi?id=745829
Diffstat (limited to 'gtk/gtkwidget.c')
-rw-r--r--gtk/gtkwidget.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 0e9ed82750..043fac48bf 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -5081,6 +5081,7 @@ gtk_widget_unmap (GtkWidget *widget)
if (gtk_widget_get_mapped (widget))
{
+ g_object_ref (widget);
gtk_widget_push_verify_invariants (widget);
if (!gtk_widget_get_has_window (widget))
@@ -5093,6 +5094,7 @@ gtk_widget_unmap (GtkWidget *widget)
g_signal_emit (widget, widget_signals[UNMAP], 0);
gtk_widget_pop_verify_invariants (widget);
+ g_object_unref (widget);
}
}