Commit 4d19de4e authored by Matthias Clasen's avatar Matthias Clasen
Browse files

window: Fix deferred focus unsetting

In commit 4a76abff, we deferred unsetting focus
and default until after the next draw, overlooking the
case where the focus is set to another widget before we
ever get to the unsetting.

Fixes: #3413
parent 24cd0567
Pipeline #275164 passed with stages
in 11 minutes and 58 seconds
......@@ -2011,6 +2011,8 @@ gtk_window_root_set_focus (GtkRoot *root,
g_clear_object (&old_focus);
priv->move_focus = FALSE;
g_object_notify (G_OBJECT (self), "focus-widget");
}
......@@ -2288,6 +2290,8 @@ gtk_window_set_default_widget (GtkWindow *window,
priv->default_widget = default_widget;
priv->unset_default = FALSE;
if (priv->default_widget)
{
if (priv->focus_widget == NULL ||
......@@ -4671,16 +4675,10 @@ maybe_unset_focus_and_default (GtkWindow *window)
GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
if (priv->move_focus)
{
gtk_widget_child_focus (GTK_WIDGET (window), GTK_DIR_TAB_FORWARD);
priv->move_focus = FALSE;
}
gtk_widget_child_focus (GTK_WIDGET (window), GTK_DIR_TAB_FORWARD);
if (priv->unset_default)
{
gtk_window_set_default_widget (window, NULL);
priv->unset_default = FALSE;
}
gtk_window_set_default_widget (window, NULL);
}
static gboolean
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment