g_object_freeze_notify (G_OBJECT (widget));
nqueue = g_object_notify_queue_freeze (G_OBJECT (widget), _gtk_widget_child_property_notify_context);
- /* Need to unset the parent window early, this can result in
- * an additional "hierarchy-changed" propagation if we are removing
- * a parented GtkWindow from the hierarchy.
- */
- gtk_widget_set_parent_window (widget, NULL);
-
toplevel = gtk_widget_get_toplevel (widget);
if (gtk_widget_is_toplevel (toplevel))
_gtk_window_unset_focus_and_default (GTK_WINDOW (toplevel), widget);
- else
- toplevel = NULL;
if (gtk_container_get_focus_child (GTK_CONTAINER (priv->parent)) == widget)
gtk_container_set_focus_child (GTK_CONTAINER (priv->parent), NULL);
gtk_widget_unrealize (widget);
}
+ /* Need to unset the parent window early, this can result in
+ * an additional "hierarchy-changed" propagation if we are removing
+ * a parented GtkWindow from the hierarchy.
+ */
+ gtk_widget_set_parent_window (widget, NULL);
+
/* Removing a widget from a container restores the child visible
* flag to the default state, so it doesn't affect the child
* in the next parent.
}
g_signal_emit (widget, widget_signals[PARENT_SET], 0, old_parent);
- if (toplevel)
+ if (toplevel && gtk_widget_is_toplevel (toplevel))
{
_gtk_widget_propagate_hierarchy_changed (widget, toplevel);
g_object_unref (toplevel);