SF.net SVN: geany: [2386] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Fri Mar 21 18:44:15 UTC 2008


Revision: 2386
          http://geany.svn.sourceforge.net/geany/?rev=2386&view=rev
Author:   eht16
Date:     2008-03-21 11:44:12 -0700 (Fri, 21 Mar 2008)

Log Message:
-----------
Allow selecting items in the symbol list by pressing Enter or Space.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/treeviews.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-03-21 18:29:25 UTC (rev 2385)
+++ trunk/ChangeLog	2008-03-21 18:44:12 UTC (rev 2386)
@@ -17,6 +17,8 @@
  * src/win32.c:
    Fix crash on Windows due to missing error message when a process
    spawning fails.
+ * src/treeviews.c:
+   Allow selecting items in the symbol list by pressing Enter or Space.
 
 
 2008-03-21  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: trunk/src/treeviews.c
===================================================================
--- trunk/src/treeviews.c	2008-03-21 18:29:25 UTC (rev 2385)
+++ trunk/src/treeviews.c	2008-03-21 18:44:12 UTC (rev 2386)
@@ -39,6 +39,7 @@
 #include "symbols.h"
 #include "navqueue.h"
 
+#include <gdk/gdkkeysyms.h>
 
 SidebarTreeviews tv;
 
@@ -82,6 +83,8 @@
 static gboolean on_taglist_tree_selection_changed(GtkTreeSelection *selection);
 static gboolean on_treeviews_button_press_event(GtkWidget *widget, GdkEventButton *event,
 																			gpointer user_data);
+static gboolean on_treeviews_key_press_event(GtkWidget *widget, GdkEventKey *event,
+																			gpointer user_data);
 static void on_list_document_activate(GtkCheckMenuItem *item, gpointer user_data);
 static void on_list_symbol_activate(GtkCheckMenuItem *item, gpointer user_data);
 
@@ -117,6 +120,8 @@
 	gtk_tree_view_set_model(GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store));
 	g_signal_connect(G_OBJECT(tree), "button-press-event",
 					G_CALLBACK(on_treeviews_button_press_event), GINT_TO_POINTER(TREEVIEW_SYMBOL));
+	g_signal_connect(G_OBJECT(tree), "key-press-event",
+					G_CALLBACK(on_treeviews_key_press_event), GINT_TO_POINTER(TREEVIEW_SYMBOL));
 
 	gtk_tree_view_set_enable_search(GTK_TREE_VIEW(tree), FALSE);
 
@@ -648,6 +653,23 @@
 }
 
 
+static gboolean on_treeviews_key_press_event(GtkWidget *widget, GdkEventKey *event,
+											 gpointer user_data)
+{
+	if (event->keyval == GDK_Return ||
+		event->keyval == GDK_ISO_Enter ||
+		event->keyval == GDK_KP_Enter ||
+		event->keyval == GDK_space)
+	{
+		GtkTreeSelection *select = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
+		/* delay the query of selection state because this callback is executed before GTK
+		 * changes the selection (g_signal_connect_after would be better but it doesn't work) */
+		g_idle_add((GSourceFunc) on_taglist_tree_selection_changed, select);
+	}
+	return FALSE;
+}
+
+
 static gboolean on_treeviews_button_press_event(GtkWidget *widget, GdkEventButton *event,
 												gpointer user_data)
 {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list