<Space> and <Enter> keys do the same thing on Symbols tab. The following patch modifies that of <Space> key, so it only scrolls to corresponding symbol on editor but retains focus on Symbols tab. (Feature request #2919444)
Index: src/sidebar.c =================================================================== --- src/sidebar.c (revision 4704) +++ src/sidebar.c (working copy) @@ -59,6 +59,12 @@ } doc_items = {NULL, NULL, NULL, NULL};
+static struct sel_chg +{ + GtkTreeSelection *selection; + guint keyval; +} sel_chgdata; + enum { TREEVIEW_SYMBOL = 0, @@ -90,7 +96,7 @@ /* callback prototypes */ static gboolean on_openfiles_tree_selection_changed(GtkTreeSelection *selection); static void on_openfiles_document_action(GtkMenuItem *menuitem, gpointer user_data); -static gboolean on_taglist_tree_selection_changed(GtkTreeSelection *selection); +static gboolean on_taglist_tree_selection_changed(struct sel_chg *p_sel_chgdata); static gboolean sidebar_button_press_cb(GtkWidget *widget, GdkEventButton *event, gpointer user_data); static gboolean sidebar_key_press_cb(GtkWidget *widget, GdkEventKey *event, @@ -735,13 +741,13 @@ }
-static gboolean on_taglist_tree_selection_changed(GtkTreeSelection *selection) +static gboolean on_taglist_tree_selection_changed(struct sel_chg *p_sel_chgdata) { GtkTreeIter iter; GtkTreeModel *model; gint line = 0;
- if (gtk_tree_selection_get_selected(selection, &model, &iter)) + if (gtk_tree_selection_get_selected(p_sel_chgdata->selection, &model, &iter)) { const TMTag *tag;
@@ -757,7 +763,8 @@ if (doc != NULL) { navqueue_goto_line(doc, doc, line); - change_focus_to_editor(doc); + if (p_sel_chgdata->keyval != GDK_space) + change_focus_to_editor(doc); } } } @@ -780,8 +787,11 @@ * changes the selection (g_signal_connect_after would be better but it doesn't work) */ if (widget == tv.tree_openfiles) /* tag and doc list have separate handlers */ g_idle_add((GSourceFunc) on_openfiles_tree_selection_changed, selection); - else - g_idle_add((GSourceFunc) on_taglist_tree_selection_changed, selection); + else { + sel_chgdata.selection = selection; + sel_chgdata.keyval = event->keyval; + g_idle_add((GSourceFunc) on_taglist_tree_selection_changed, &sel_chgdata); + } } return FALSE; } @@ -822,8 +832,11 @@ * changes the selection (g_signal_connect_after would be better but it doesn't work) */ if (widget == tv.tree_openfiles) g_idle_add((GSourceFunc) on_openfiles_tree_selection_changed, selection); - else - g_idle_add((GSourceFunc) on_taglist_tree_selection_changed, selection); + else { + sel_chgdata.selection = selection; + sel_chgdata.keyval = GDK_VoidSymbol; + g_idle_add((GSourceFunc) on_taglist_tree_selection_changed, &sel_chgdata); + } } else if (event->button == 3) {
On Thu, 25 Feb 2010 07:58:48 -0800 (PST), Can wrote:
<Space> and <Enter> keys do the same thing on Symbols tab. The following patch modifies that of <Space> key, so it only scrolls to corresponding symbol on editor but retains focus on Symbols tab.
Thanks for the patch, committed with slight modifications and the extension that this always works for the document list.
(Feature request #2919444)
Thanks for reminding.
Regards, Enrico