diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2015-03-16 13:45:03 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2015-03-16 16:22:25 +0100 |
commit | f5f6ad99819117d18b51e5db047437be24267fe0 (patch) | |
tree | 3e220e4364c0c19f00f14216d704f6998d7dbc06 /gtk/gtkwidget.c | |
parent | 2e272106ef31bf839ed73d20a95c51fcccff8c76 (diff) | |
download | gtk+-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.c | 2 |
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); } } |