[geany/geany-plugins] e0a630: treebrowser: sensible left/right arrows

Roland Pallai git-noreply at xxxxx
Mon Oct 28 07:14:55 UTC 2013


Branch:      refs/heads/master
Author:      Roland Pallai <rpallai at magex.hu>
Committer:   Frank Lanitz <frank at frank.uvena.de>
Date:        Mon, 28 Oct 2013 07:14:55 UTC
Commit:      e0a630ef51ff284f0aba990fa55ea38576bd07ba
             https://github.com/geany/geany-plugins/commit/e0a630ef51ff284f0aba990fa55ea38576bd07ba

Log Message:
-----------
treebrowser: sensible left/right arrows

Collapse- or select parent row on left arrow, expand row on right
arrow.


Modified Paths:
--------------
    treebrowser/src/treebrowser.c

Modified: treebrowser/src/treebrowser.c
36 files changed, 29 insertions(+), 7 deletions(-)
===================================================================
@@ -1428,12 +1428,12 @@ enum
 static gboolean
 on_treeview_keypress(GtkWidget *widget, GdkEventKey *event)
 {
+	GtkTreeIter		iter;
+	GtkTreeModel	*model;
+	GtkTreePath		*path;
+	
 	if (event->keyval == GDK_space)
 	{
-		GtkTreeIter		iter;
-		GtkTreeModel	*model;
-		GtkTreePath		*path;
-
 		if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)), &model, &iter))
 		{
 			path = gtk_tree_model_get_path(model, &iter);
@@ -1451,9 +1451,6 @@ enum
 	}
 	if (event->keyval == GDK_Menu)
 	{
-		GtkTreeIter		iter;
-		GtkTreeModel	*model;
-		GtkTreePath		*path;
 		gchar *name = NULL, *uri = NULL;
 		GtkWidget *menu;
 		
@@ -1471,6 +1468,31 @@ enum
 		
 		return TRUE;
 	}
+	if (event->keyval == GDK_Left)
+	{
+		if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)), &model, &iter))
+		{
+			path = gtk_tree_model_get_path(model, &iter);
+			if (gtk_tree_view_row_expanded(GTK_TREE_VIEW(widget), path))
+				gtk_tree_view_collapse_row(GTK_TREE_VIEW(widget), path);
+			else if (gtk_tree_path_get_depth(path) > 1) {
+				gtk_tree_path_up(path);
+				gtk_tree_view_set_cursor(GTK_TREE_VIEW(widget), path, NULL, FALSE);
+				gtk_tree_selection_select_path(gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)), path);
+			}
+		}
+		return TRUE;
+	}
+	if (event->keyval == GDK_Right)
+	{
+		if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)), &model, &iter))
+		{
+			path = gtk_tree_model_get_path(model, &iter);
+			if (!gtk_tree_view_row_expanded(GTK_TREE_VIEW(widget), path))
+				gtk_tree_view_expand_row(GTK_TREE_VIEW(widget), path, FALSE);
+		}
+		return TRUE;
+	}
 
 	return FALSE;
 }



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Plugins-Commits mailing list