focus: fall back to old behaviour if we didn't focus anything
authorAdam Williamson <awilliam@redhat.com>
Wed, 2 Nov 2022 00:26:29 +0000 (17:26 -0700)
committerMat <mail@mathias.is>
Sat, 12 Nov 2022 01:37:52 +0000 (03:37 +0200)
8455b9ac74 seems to have introduced a problem where we can wind
up focusing no widget at all if the `while (parent)` loop doesn't
find a widget it can successfully move the focus to. This 'fixes'
that by falling back to doing the previous thing if we make it
all the way through that loop without moving the focus. Thanks to
@coreyberla for a hint to improve the implementation.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
gtk/gtkwindow.c

index 6b4e2d77a764ef13203c379a67e05bbf37f8b739..909f597374e9aa3ea3cf919eb1e2b24f8d58f6f3 100644 (file)
@@ -4703,6 +4703,9 @@ maybe_unset_focus_and_default (GtkWindow *window)
           parent = _gtk_widget_get_parent (parent);
         }
 
+      if (!parent)
+        gtk_widget_child_focus (GTK_WIDGET (window), GTK_DIR_TAB_FORWARD);
+
       priv->move_focus = FALSE;
       g_clear_object (&priv->move_focus_widget);
     }