[Xfce4-commits] [xfce/xfce4-appfinder] 02/05: UX enh.: jump to the second item when down key is pressed

noreply at xfce.org noreply at xfce.org
Sat Aug 18 20:32:50 CEST 2018


This is an automated email from the git hooks/post-receive script.

a   n   d   r   e       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository xfce/xfce4-appfinder.

commit 09ee57c0e562c7511a3134098d2800b6f4a632ce
Author: Andre Miranda <andreldm at xfce.org>
Date:   Sat Aug 18 14:45:14 2018 -0300

    UX enh.: jump to the second item when down key is pressed
---
 src/appfinder-window.c | 52 +++++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 41 insertions(+), 11 deletions(-)

diff --git a/src/appfinder-window.c b/src/appfinder-window.c
index 41aa7c6..c0b431a 100644
--- a/src/appfinder-window.c
+++ b/src/appfinder-window.c
@@ -803,6 +803,23 @@ xfce_appfinder_window_view_get_selected (XfceAppfinderWindow  *window,
 
 
 
+static gboolean
+xfce_appfinder_window_view_get_selected_path (XfceAppfinderWindow  *window,
+                                              GtkTreePath         **path)
+{
+  GtkTreeModel *model;
+  GtkTreeIter   iter;
+
+  if (!xfce_appfinder_window_view_get_selected (window, &model, &iter))
+    return FALSE;
+
+  *path = gtk_tree_model_get_path (model, &iter);
+
+  return (*path != NULL);
+}
+
+
+
 static void
 xfce_appfinder_window_popup_menu_toggle_bookmark (GtkWidget           *mi,
                                                   XfceAppfinderWindow *window)
@@ -1322,17 +1339,26 @@ xfce_appfinder_window_entry_key_press_event (GtkWidget           *entry,
 {
   gboolean          expand;
   gboolean          is_expanded;
+  GtkTreePath      *path;
 
-  if (event->keyval == GDK_KEY_Up
-      || event->keyval == GDK_KEY_Down)
+  if (event->keyval == GDK_KEY_Tab &&
+      !gtk_widget_get_visible (window->paned) &&
+      xfce_appfinder_window_pointer_is_grabbed (entry))
+    {
+      /* don't tab to the close button */
+      return TRUE;
+    }
+
+  if (event->keyval == GDK_KEY_Up ||
+      event->keyval == GDK_KEY_Down)
     {
       expand = (event->keyval == GDK_KEY_Down);
       is_expanded = gtk_widget_get_visible (window->paned);
+
       if (is_expanded != expand)
         {
           /* don't break entry completion navigation in collapsed mode */
-          if (!is_expanded
-              && xfce_appfinder_window_pointer_is_grabbed (entry))
+          if (!is_expanded && xfce_appfinder_window_pointer_is_grabbed (entry))
             {
               /* window is still collapsed and the pointer is grabbed
                * by the popup menu, do nothing with the event */
@@ -1342,13 +1368,17 @@ xfce_appfinder_window_entry_key_press_event (GtkWidget           *entry,
           xfce_appfinder_window_set_expanded (window, expand);
           return TRUE;
         }
-    }
-  else if (event->keyval == GDK_KEY_Tab
-           && !gtk_widget_get_visible (window->paned)
-           && xfce_appfinder_window_pointer_is_grabbed (entry))
-    {
-      /* don't tab to the close button */
-      return TRUE;
+
+      /* The first item is usually selected, so we should jump to 2nd one
+       * when down key is pressed */
+      if (is_expanded && expand &&
+          GTK_IS_TREE_VIEW (window->view) && /* does not make sense for icon view */
+          xfce_appfinder_window_view_get_selected_path (window, &path))
+        {
+          gtk_tree_path_next (path);
+          gtk_tree_view_set_cursor (GTK_TREE_VIEW (window->view), path, NULL, FALSE);
+          gtk_tree_path_free (path);
+        }
     }
 
   return FALSE;

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list