diff --git a/src/appfinder-window.c b/src/appfinder-window.c index d4e0cf0..b9d22df 100644 --- a/src/appfinder-window.c +++ b/src/appfinder-window.c @@ -1381,28 +1381,40 @@ xfce_appfinder_window_drag_data_get (GtkWidget *widget, +static gboolean +xfce_appfinder_key_pressed_should_trigger_search (guint keyval) +{ + return keyval >= GDK_KEY_A && keyval <= GDK_KEY_Z || + keyval >= GDK_KEY_a && keyval <= GDK_KEY_z || + keyval >= GDK_KEY_0 && keyval <= GDK_KEY_9 || + keyval == GDK_KEY_BackSpace; +} + + + static gboolean xfce_appfinder_window_treeview_key_press_event (GtkWidget *widget, GdkEventKey *event, XfceAppfinderWindow *window) { - if (widget == window->view) + if (widget == window->view && event->keyval == GDK_KEY_Left) { - if (event->keyval == GDK_KEY_Left) - { - gtk_widget_grab_focus (window->sidepane); - return TRUE; - } + gtk_widget_grab_focus (window->sidepane); + return TRUE; } - else if (widget == window->sidepane) + + if (widget == window->sidepane && event->keyval == GDK_KEY_Right) { - if (event->keyval == GDK_KEY_Right) - { - gtk_widget_grab_focus (window->view); - return TRUE; - } + gtk_widget_grab_focus (window->view); + return TRUE; } + if (xfce_appfinder_key_pressed_should_trigger_search (event->keyval)) + { + gtk_widget_grab_focus (window->entry); + return TRUE; + } + return FALSE; }