SF.net SVN: geany: [1606] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Sun Jun 10 11:28:55 UTC 2007


Revision: 1606
          http://svn.sourceforge.net/geany/?rev=1606&view=rev
Author:   eht16
Date:     2007-06-10 04:28:54 -0700 (Sun, 10 Jun 2007)

Log Message:
-----------
Prevent double jump to line when clicking on a symbol list item.

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

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2007-06-09 12:57:04 UTC (rev 1605)
+++ trunk/ChangeLog	2007-06-10 11:28:54 UTC (rev 1606)
@@ -1,3 +1,9 @@
+2007-06-10  Enrico Tröger  <enrico.troeger at uvena.de>
+
+ * src/treeviews.c: Prevent double jump to line when clicking on a
+                    symbol list item.
+
+
 2007-06-09  Enrico Tröger  <enrico.troeger at uvena.de>
 
  * THANKS, src/document.c:

Modified: trunk/src/treeviews.c
===================================================================
--- trunk/src/treeviews.c	2007-06-09 12:57:04 UTC (rev 1605)
+++ trunk/src/treeviews.c	2007-06-10 11:28:54 UTC (rev 1606)
@@ -59,7 +59,7 @@
 static void on_taglist_tree_popup_clicked(GtkMenuItem *menuitem, gpointer user_data);
 static void on_openfiles_tree_selection_changed(GtkTreeSelection *selection, gpointer data);
 static void on_openfiles_tree_popup_clicked(GtkMenuItem *menuitem, gpointer user_data);
-static void on_taglist_tree_selection_changed(GtkTreeSelection *selection, gpointer data);
+static gboolean on_taglist_tree_selection_changed(GtkTreeSelection *selection);
 static gboolean on_treeviews_button_press_event(GtkWidget *widget, GdkEventButton *event,
 																			gpointer user_data);
 
@@ -91,8 +91,7 @@
 	// selection handling
 	select = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
 	gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE);
-	g_signal_connect(G_OBJECT(select), "changed",
-				G_CALLBACK(on_taglist_tree_selection_changed), NULL);
+	// callback for changed selection not necessary, will be handled by button-press-event
 }
 
 
@@ -452,7 +451,7 @@
 }
 
 
-static void on_taglist_tree_selection_changed(GtkTreeSelection *selection, gpointer data)
+static gboolean on_taglist_tree_selection_changed(GtkTreeSelection *selection)
 {
 	GtkTreeIter iter;
 	GtkTreeModel *model;
@@ -468,19 +467,19 @@
 			g_free(string);
 		}
 	}
+	return FALSE;
 }
 
 
 static gboolean on_treeviews_button_press_event(GtkWidget *widget, GdkEventButton *event,
 																			gpointer user_data)
 {
-	if (event->button == 1)
-	{
-		if (GPOINTER_TO_INT(user_data) == TREEVIEW_SYMBOL)
-		{	// allow reclicking of taglist treeview item
-			GtkTreeSelection *select = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
-			on_taglist_tree_selection_changed(select, NULL);
-		}
+	if (event->button == 1 && GPOINTER_TO_INT(user_data) == TREEVIEW_SYMBOL)
+	{ // allow reclicking of taglist treeview item
+		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);
 	}
 
 	if (event->button == 3)


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