Revision: 4713 http://geany.svn.sourceforge.net/geany/?rev=4713&view=rev Author: eht16 Date: 2010-02-28 14:57:06 +0000 (Sun, 28 Feb 2010)
Log Message: ----------- Make Space on the compiler and messages widgets not focus the editor widget while Enter does (patch by Can Koy, thanks).
Modified Paths: -------------- trunk/ChangeLog trunk/src/msgwindow.c trunk/src/msgwindow.h trunk/src/ui_utils.c trunk/src/ui_utils.h
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-02-28 14:32:38 UTC (rev 4712) +++ trunk/ChangeLog 2010-02-28 14:57:06 UTC (rev 4713) @@ -16,6 +16,9 @@ * src/document.c, src/document.h: Fix document_try_focus() to make it work with the sidebar document list as well. + * src/msgwindow.c, src/msgwindow.h, src/ui_utils.c, src/ui_utils.h: + Make Space on the compiler and messages widgets not focus the editor + widget while Enter does (patch by Can Koy, thanks).
2010-02-28 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
Modified: trunk/src/msgwindow.c =================================================================== --- trunk/src/msgwindow.c 2010-02-28 14:32:38 UTC (rev 4712) +++ trunk/src/msgwindow.c 2010-02-28 14:57:06 UTC (rev 4713) @@ -111,18 +111,29 @@ }
+static gboolean is_keyval_enter_or_return(guint keyval) +{ + return (keyval == GDK_Return || keyval == GDK_ISO_Enter || keyval == GDK_KP_Enter); +} + + static gboolean on_msgwin_key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer data) { - if (event->keyval == GDK_Return || - event->keyval == GDK_ISO_Enter || - event->keyval == GDK_KP_Enter || - event->keyval == GDK_space) + if (is_keyval_enter_or_return(event->keyval) || event->keyval == GDK_space) { - GdkEventButton button_event; - - button_event.button = 1; - button_event.time = event->time; - on_msgwin_button_press_event(NULL, &button_event, data); + switch (GPOINTER_TO_INT(data)) + { + case MSG_COMPILER: + { /* single click in the compiler treeview */ + msgwin_goto_compiler_file_line(event->keyval); + break; + } + case MSG_MESSAGE: + { /* single click in the message treeview (results of 'Find usage') */ + msgwin_goto_messages_file_line(event->keyval); + break; + } + } } return FALSE; } @@ -582,7 +593,7 @@ }
-static gboolean goto_compiler_file_line(const gchar *filename, gint line) +static gboolean goto_compiler_file_line(const gchar *filename, gint line, guint keyval) { if (!filename || line <= -1) return FALSE; @@ -626,17 +637,23 @@
if (doc != NULL) { + gboolean ret; + if (! doc->changed) /* if modified, line may be wrong */ editor_indicator_set_on_line(doc->editor, GEANY_INDICATOR_ERROR, line - 1);
- return navqueue_goto_line(old_doc, doc, line); + ret = navqueue_goto_line(old_doc, doc, line); + if (ret && is_keyval_enter_or_return(keyval)) + gtk_widget_grab_focus(GTK_WIDGET(doc->editor->sci)); + + return ret; } } return FALSE; }
-gboolean msgwin_goto_compiler_file_line(void) +gboolean msgwin_goto_compiler_file_line(guint keyval) { GtkTreeIter iter; GtkTreeModel *model; @@ -672,7 +689,7 @@ g_free(string); g_free(dir);
- ret = goto_compiler_file_line(filename, line); + ret = goto_compiler_file_line(filename, line, keyval); g_free(filename); return ret; } @@ -949,7 +966,7 @@ }
-gboolean msgwin_goto_messages_file_line(void) +gboolean msgwin_goto_messages_file_line(guint keyval) { GtkTreeIter iter; GtkTreeModel *model; @@ -969,6 +986,8 @@ if (line >= 0 && DOC_VALID(doc)) { ret = navqueue_goto_line(old_doc, doc, line); + if (ret && is_keyval_enter_or_return(keyval)) + gtk_widget_grab_focus(GTK_WIDGET(doc->editor->sci)); } else if (line < 0 && string != NULL) { @@ -979,7 +998,11 @@ /* use document_open_file to find an already open file, or open it in place */ doc = document_open_file(filename, FALSE, NULL, NULL); if (doc != NULL) + { ret = navqueue_goto_line(old_doc, doc, line); + if (ret && is_keyval_enter_or_return(keyval)) + gtk_widget_grab_focus(GTK_WIDGET(doc->editor->sci)); + } } g_free(filename); } @@ -1027,12 +1050,12 @@ { case MSG_COMPILER: { /* single click in the compiler treeview */ - msgwin_goto_compiler_file_line(); + msgwin_goto_compiler_file_line(0); break; } case MSG_MESSAGE: { /* single click in the message treeview (results of 'Find usage') */ - msgwin_goto_messages_file_line(); + msgwin_goto_messages_file_line(0); break; } }
Modified: trunk/src/msgwindow.h =================================================================== --- trunk/src/msgwindow.h 2010-02-28 14:32:38 UTC (rev 4712) +++ trunk/src/msgwindow.h 2010-02-28 14:57:06 UTC (rev 4713) @@ -101,11 +101,11 @@
void msgwin_menu_add_common_items(GtkMenu *menu);
-gboolean msgwin_goto_compiler_file_line(void); +gboolean msgwin_goto_compiler_file_line(guint keyval);
void msgwin_parse_compiler_error_line(const gchar *string, const gchar *dir, gchar **filename, gint *line);
-gboolean msgwin_goto_messages_file_line(void); +gboolean msgwin_goto_messages_file_line(guint keyval);
#endif
Modified: trunk/src/ui_utils.c =================================================================== --- trunk/src/ui_utils.c 2010-02-28 14:32:38 UTC (rev 4712) +++ trunk/src/ui_utils.c 2010-02-28 14:57:06 UTC (rev 4713) @@ -1492,7 +1492,7 @@ while (TRUE) { gtk_tree_selection_select_iter(treesel, &iter); - if (cb()) + if (cb(0)) break; /* found next message */
if (! tree_model_iter_get_next(model, &iter, down))
Modified: trunk/src/ui_utils.h =================================================================== --- trunk/src/ui_utils.h 2010-02-28 14:32:38 UTC (rev 4712) +++ trunk/src/ui_utils.h 2010-02-28 14:57:06 UTC (rev 4713) @@ -283,7 +283,7 @@ void ui_update_tab_status(GeanyDocument *doc);
-typedef gboolean TVMatchCallback(void); +typedef gboolean TVMatchCallback(guint);
gboolean ui_tree_view_find_next(GtkTreeView *treeview, TVMatchCallback cb);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.