[Xfce4-commits] <xfce4-appfinder:master> Add left/right navigation to the treeviews.
Nick Schermer
noreply at xfce.org
Sat Oct 29 22:34:01 CEST 2011
Updating branch refs/heads/master
to 18344ee8e337a5ecba01a74045d28392757afecd (commit)
from 4afcc941eae4e2aebc75128e394ecedc334a5a08 (commit)
commit 18344ee8e337a5ecba01a74045d28392757afecd
Author: Nick Schermer <nick at xfce.org>
Date: Sat Oct 29 22:33:01 2011 +0200
Add left/right navigation to the treeviews.
src/appfinder-window.c | 32 ++++++++++++++++++++++++++++++++
1 files changed, 32 insertions(+), 0 deletions(-)
diff --git a/src/appfinder-window.c b/src/appfinder-window.c
index 87474e6..cdd4b78 100644
--- a/src/appfinder-window.c
+++ b/src/appfinder-window.c
@@ -69,6 +69,9 @@ static void xfce_appfinder_window_drag_data_get (GtkWidget
guint info,
guint drag_time,
XfceAppfinderWindow *window);
+static gboolean xfce_appfinder_window_treeview_key_press_event (GtkWidget *widget,
+ GdkEventKey *event,
+ XfceAppfinderWindow *window);
static void xfce_appfinder_window_category_changed (GtkTreeSelection *selection,
XfceAppfinderWindow *window);
static void xfce_appfinder_window_category_set_categories (XfceAppfinderWindow *window);
@@ -251,6 +254,7 @@ xfce_appfinder_window_init (XfceAppfinderWindow *window)
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (sidepane), FALSE);
gtk_tree_view_set_enable_search (GTK_TREE_VIEW (sidepane), FALSE);
g_signal_connect_swapped (G_OBJECT (sidepane), "start-interactive-search", G_CALLBACK (gtk_widget_grab_focus), entry);
+ g_signal_connect (G_OBJECT (sidepane), "key-press-event", G_CALLBACK (xfce_appfinder_window_treeview_key_press_event), window);
gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (sidepane),
xfce_appfinder_category_model_row_separator_func, NULL, NULL);
gtk_container_add (GTK_CONTAINER (scroll), sidepane);
@@ -295,6 +299,7 @@ xfce_appfinder_window_init (XfceAppfinderWindow *window)
gtk_drag_source_set (treeview, GDK_BUTTON1_MASK, target_list, G_N_ELEMENTS (target_list), GDK_ACTION_COPY);
g_signal_connect (G_OBJECT (treeview), "drag-begin", G_CALLBACK (xfce_appfinder_window_drag_begin), window);
g_signal_connect (G_OBJECT (treeview), "drag-data-get", G_CALLBACK (xfce_appfinder_window_drag_data_get), window);
+ g_signal_connect (G_OBJECT (treeview), "key-press-event", G_CALLBACK (xfce_appfinder_window_treeview_key_press_event), window);
gtk_container_add (GTK_CONTAINER (scroll), treeview);
gtk_widget_show (treeview);
g_object_unref (G_OBJECT (filter_model));
@@ -629,6 +634,33 @@ xfce_appfinder_window_drag_data_get (GtkWidget *widget,
+static gboolean
+xfce_appfinder_window_treeview_key_press_event (GtkWidget *widget,
+ GdkEventKey *event,
+ XfceAppfinderWindow *window)
+{
+ if (widget == window->treeview)
+ {
+ if (event->keyval == GDK_Left)
+ {
+ gtk_widget_grab_focus (window->sidepane);
+ return TRUE;
+ }
+ }
+ else if (widget == window->sidepane)
+ {
+ if (event->keyval == GDK_Right)
+ {
+ gtk_widget_grab_focus (window->treeview);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+
+
static void
xfce_appfinder_window_entry_icon_released (GtkEntry *entry,
GtkEntryIconPosition icon_pos,
More information about the Xfce4-commits
mailing list