diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 7865962c80..c68cf2f8f8 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -2048,7 +2048,9 @@ gtk_window_root_set_focus (GtkRoot *root, if (focus == priv->focus_widget) { - priv->move_focus = FALSE; + if (priv->move_focus && + focus && gtk_widget_is_visible (focus)) + priv->move_focus = FALSE; return; } @@ -2068,7 +2070,9 @@ gtk_window_root_set_focus (GtkRoot *root, g_clear_object (&old_focus); - priv->move_focus = FALSE; + if (priv->move_focus && + focus && gtk_widget_is_visible (focus)) + priv->move_focus = FALSE; g_object_notify (G_OBJECT (self), "focus-widget"); } @@ -4733,7 +4737,7 @@ maybe_unset_focus_and_default (GtkWindow *window) break; } - parent = _gtk_widget_get_parent (parent); + parent = _gtk_widget_get_parent (parent); } }