{
if (priv->move_focus &&
focus && gtk_widget_is_visible (focus))
- priv->move_focus = FALSE;
+ {
+ priv->move_focus = FALSE;
+ g_clear_object (&priv->move_focus_widget);
+ }
return;
}
if (priv->move_focus &&
focus && gtk_widget_is_visible (focus))
- priv->move_focus = FALSE;
+ {
+ priv->move_focus = FALSE;
+ g_clear_object (&priv->move_focus_widget);
+ }
g_object_notify (G_OBJECT (self), "focus-widget");
}
g_list_free_full (priv->foci, (GDestroyNotify) gtk_pointer_focus_unref);
priv->foci = NULL;
+ g_clear_object (&priv->move_focus_widget);
gtk_window_set_focus (window, NULL);
gtk_window_set_default_widget (window, NULL);
parent = _gtk_widget_get_parent (parent);
}
+
+ priv->move_focus = FALSE;
+ g_clear_object (&priv->move_focus_widget);
}
if (priv->unset_default)
child = priv->focus_widget;
if (child && (child == widget || gtk_widget_is_ancestor (child, widget)))
{
- priv->move_focus_widget = widget;
+ priv->move_focus_widget = g_object_ref (widget);
priv->move_focus = TRUE;
}