[nautilus/wip/antoniof/view-focus-bugs: 1/2] files-view: Focus view items directly




commit c9dfab8090a2c4977682c98e16fb846a2da5b61b
Author: António Fernandes <antoniof gnome org>
Date:   Sun Sep 11 14:14:33 2022 +0100

    files-view: Focus view items directly
    
    Before the port to GTK 4, when the focus moved into the view through
    keyboard shortcuts (Tab), an item used to be immediately focused.
    
    Nowadays we focus the view widget itself first (GtkColumnView or
    GtkGridView), which requires an extra key press to move focus to an
    item. This makes keyboard usage slower and frustrating.
    
    Override .focus() to move the focus directly inside the view widget.
    
    Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/2483

 src/nautilus-files-view.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
---
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index f19fab712..f726e398a 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -3205,6 +3205,20 @@ slot_active_changed (NautilusWindowSlot *slot,
     }
 }
 
+static gboolean
+nautilus_files_view_focus (GtkWidget        *widget,
+                           GtkDirectionType  direction)
+{
+    NautilusFilesView *view;
+    NautilusFilesViewPrivate *priv;
+    GtkWidget *child;
+
+    view = NAUTILUS_FILES_VIEW (widget);
+    priv = nautilus_files_view_get_instance_private (view);
+    child = gtk_scrolled_window_get_child (GTK_SCROLLED_WINDOW (priv->scrolled_window));
+    return child != NULL && gtk_widget_child_focus (child, direction);
+}
+
 static gboolean
 nautilus_files_view_grab_focus (GtkWidget *widget)
 {
@@ -9502,6 +9516,7 @@ nautilus_files_view_class_init (NautilusFilesViewClass *klass)
     oclass->get_property = nautilus_files_view_get_property;
     oclass->set_property = nautilus_files_view_set_property;
 
+    widget_class->focus = nautilus_files_view_focus;
     widget_class->grab_focus = nautilus_files_view_grab_focus;
 
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]