<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)
        {



      

_______________________________________________
Geany-devel mailing list
Geany-devel@uvena.de
http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel

Reply via email to