[Xfce4-commits] <thunar:master> Improve keyboard navigation in shortcuts view (bug #6635).

Nick Schermer noreply at xfce.org
Sat Sep 29 22:24:01 CEST 2012


Updating branch refs/heads/master
         to 38dc34034c8d0fda651aa5c4d0430d91f80cdafb (commit)
       from e20942b733be6fcdf33595f000251dcb00e55e7a (commit)

commit 38dc34034c8d0fda651aa5c4d0430d91f80cdafb
Author: Nick Schermer <nick at xfce.org>
Date:   Sat Sep 29 22:20:54 2012 +0200

    Improve keyboard navigation in shortcuts view (bug #6635).
    
    When using up/down in the shortcuts view, enter the
    directory but without loosing focus.

 thunar/thunar-shortcuts-view.c |   31 +++++++++++++++++++++++++++++++
 1 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/thunar/thunar-shortcuts-view.c b/thunar/thunar-shortcuts-view.c
index a931019..3e7c7a0 100644
--- a/thunar/thunar-shortcuts-view.c
+++ b/thunar/thunar-shortcuts-view.c
@@ -30,6 +30,8 @@
 #include <string.h>
 #endif
 
+#include <gdk/gdkkeysyms.h>
+
 #ifdef HAVE_LIBNOTIFY
 #include <thunar/thunar-notify.h>
 #endif
@@ -68,6 +70,8 @@ static gboolean       thunar_shortcuts_view_button_press_event           (GtkWid
                                                                           GdkEventButton           *event);
 static gboolean       thunar_shortcuts_view_button_release_event         (GtkWidget                *widget,
                                                                           GdkEventButton           *event);
+static gboolean       thunar_shortcuts_view_key_release_event            (GtkWidget                *widget,
+                                                                          GdkEventKey              *event);
 static void           thunar_shortcuts_view_drag_begin                   (GtkWidget                *widget,
                                                                           GdkDragContext           *context);
 static void           thunar_shortcuts_view_drag_data_received           (GtkWidget                *widget,
@@ -200,6 +204,7 @@ thunar_shortcuts_view_class_init (ThunarShortcutsViewClass *klass)
   gtkwidget_class = GTK_WIDGET_CLASS (klass);
   gtkwidget_class->button_press_event = thunar_shortcuts_view_button_press_event;
   gtkwidget_class->button_release_event = thunar_shortcuts_view_button_release_event;
+  gtkwidget_class->key_release_event = thunar_shortcuts_view_key_release_event;
   gtkwidget_class->drag_begin = thunar_shortcuts_view_drag_begin;
   gtkwidget_class->drag_data_received = thunar_shortcuts_view_drag_data_received;
   gtkwidget_class->drag_drop = thunar_shortcuts_view_drag_drop;
@@ -440,6 +445,32 @@ thunar_shortcuts_view_button_release_event (GtkWidget      *widget,
 
 
 
+static gboolean
+thunar_shortcuts_view_key_release_event (GtkWidget   *widget,
+                                         GdkEventKey *event)
+{
+  ThunarShortcutsView *view = THUNAR_SHORTCUTS_VIEW (widget);
+
+  /* work nicer with keyboard navigation */
+  switch (event->keyval)
+    {
+    case GDK_Up:
+    case GDK_Down:
+    case GDK_KP_Up:
+    case GDK_KP_Down:
+      thunar_shortcuts_view_open (view, FALSE);
+
+      /* keep focus on us */
+      gtk_widget_grab_focus (widget);
+      break;
+    }
+
+  /* call the parent's release event handler */
+  return (*GTK_WIDGET_CLASS (thunar_shortcuts_view_parent_class)->key_release_event) (widget, event);
+}
+
+
+
 static void
 thunar_shortcuts_view_drag_begin (GtkWidget      *widget,
                                   GdkDragContext *context)


More information about the Xfce4-commits mailing list