talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 53057151deb0b63df65fa570df40407effc814c0
parent 5a66116ee95c1ceae362074be6cc286a6c70ecc3
Author: Andrej Kacian <ticho@claws-mail.org>
Date:   Mon, 19 Dec 2016 21:30:45 +0100

Use left/right keys to collapse/expand rows in foldersel dialog.

Further keypress will move the cursor to parent
or first child, respectively.

Diffstat:
Msrc/foldersel.c | 32+++++++++++++++++++++++++++++++-
1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/src/foldersel.c b/src/foldersel.c @@ -655,8 +655,38 @@ static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data) static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data) { - if (event && event->keyval == GDK_KEY_Escape) + if (!event) + return FALSE; + + if (event->keyval == GDK_KEY_Escape) foldersel_cancel(NULL, NULL); + + GtkTreePath *path = NULL; + gtk_tree_view_get_cursor(GTK_TREE_VIEW(treeview), &path, NULL); + if (path == NULL) + return FALSE; + + switch (event->keyval) { + case GDK_KEY_Left: + if (gtk_tree_view_row_expanded(GTK_TREE_VIEW(treeview), path)) { + gtk_tree_view_collapse_row(GTK_TREE_VIEW(treeview), path); + } else { + gtk_tree_path_up(path); + gtk_tree_view_set_cursor(GTK_TREE_VIEW(treeview), path, NULL, FALSE); + } + break; + case GDK_KEY_Right: + if (!gtk_tree_view_row_expanded(GTK_TREE_VIEW(treeview), path)) { + gtk_tree_view_expand_row(GTK_TREE_VIEW(treeview), path, FALSE); + } else { + gtk_tree_path_down(path); + gtk_tree_view_set_cursor(GTK_TREE_VIEW(treeview), path, NULL, FALSE); + } + break; + } + + gtk_tree_path_free(path); + return FALSE; }