diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 1850c595bd..d1395e3b44 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -5553,6 +5553,7 @@ gtk_widget_unrealize (GtkWidget *widget) { g_return_if_fail (GTK_IS_WIDGET (widget)); + g_object_ref (widget); gtk_widget_push_verify_invariants (widget); if (widget->priv->has_shape_mask) @@ -5563,8 +5564,6 @@ gtk_widget_unrealize (GtkWidget *widget) if (gtk_widget_get_realized (widget)) { - g_object_ref (widget); - if (widget->priv->mapped) gtk_widget_unmap (widget); @@ -5574,11 +5573,10 @@ gtk_widget_unrealize (GtkWidget *widget) g_signal_emit (widget, widget_signals[UNREALIZE], 0); g_assert (!widget->priv->mapped); gtk_widget_set_realized (widget, FALSE); - - g_object_unref (widget); } gtk_widget_pop_verify_invariants (widget); + g_object_unref (widget); } /*****************************************