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)
committerAdam Williamson <awilliam@redhat.com>
Wed, 2 Nov 2022 16:32:32 +0000 (09:32 -0700)
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 a7cbde18bc812f6c7f7d0ecd65f264597d7c3da6..21dfb49880cc001982c826ddff62a4745f5f0857 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);
     }