SF.net SVN: geany: [2741] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Wed Jul 2 11:58:03 UTC 2008
Revision: 2741
http://geany.svn.sourceforge.net/geany/?rev=2741&view=rev
Author: ntrel
Date: 2008-07-02 04:58:01 -0700 (Wed, 02 Jul 2008)
Log Message:
-----------
Fix behaviour of Home and End keys in non-editor widgets when they
are set as keybindings for Go to Line Start/End.
This uses a new ignore_keybinding variable because changing
KeyCallback to return gboolean would break plugin keybindings.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/keybindings.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-07-01 14:20:16 UTC (rev 2740)
+++ trunk/ChangeLog 2008-07-02 11:58:01 UTC (rev 2741)
@@ -1,3 +1,12 @@
+2008-07-02 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/keybindings.c:
+ Fix behaviour of Home and End keys in non-editor widgets when they
+ are set as keybindings for Go to Line Start/End.
+ This uses a new ignore_keybinding variable because changing
+ KeyCallback to return gboolean would break plugin keybindings.
+
+
2008-07-01 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/treeviews.c, src/callbacks.c, src/document.c, src/document.h:
Modified: trunk/src/keybindings.c
===================================================================
--- trunk/src/keybindings.c 2008-07-01 14:20:16 UTC (rev 2740)
+++ trunk/src/keybindings.c 2008-07-02 11:58:01 UTC (rev 2741)
@@ -51,6 +51,8 @@
/* keyfile group name for non-plugin KB groups */
const gchar keybindings_keyfile_group_name[] = "Bindings";
+static gboolean ignore_keybinding = FALSE;
+
static GtkAccelGroup *kb_accel_group = NULL;
static const gboolean swap_alt_tab_order = FALSE;
@@ -916,6 +918,7 @@
if (check_snippet_completion(keyval, state))
return TRUE;
+ ignore_keybinding = FALSE;
for (g = 0; g < keybinding_groups->len; g++)
{
KeyBindingGroup *group = g_ptr_array_index(keybinding_groups, g);
@@ -931,7 +934,7 @@
/* call the corresponding callback function for this shortcut */
kb->callback(i);
- return TRUE;
+ return !ignore_keybinding;
}
}
}
@@ -1361,22 +1364,22 @@
{
case GEANY_KEYS_GOTO_BACK:
navqueue_go_back();
- break;
+ return;
case GEANY_KEYS_GOTO_FORWARD:
navqueue_go_forward();
- break;
+ return;
case GEANY_KEYS_GOTO_LINE:
on_go_to_line1_activate(NULL, NULL);
- break;
+ return;
case GEANY_KEYS_GOTO_MATCHINGBRACE:
goto_matching_brace(doc);
- break;
+ return;
case GEANY_KEYS_GOTO_TOGGLEMARKER:
{
gboolean set = sci_is_marker_set_at_line(doc->sci, cur_line, 1);
sci_set_marker_at_line(doc->sci, cur_line, ! set, 1);
- break;
+ return;
}
case GEANY_KEYS_GOTO_NEXTMARKER:
{
@@ -1387,7 +1390,7 @@
sci_set_current_line(doc->sci, mline);
editor_display_current_line(doc, 0.5F);
}
- break;
+ return;
}
case GEANY_KEYS_GOTO_PREVIOUSMARKER:
{
@@ -1398,16 +1401,25 @@
sci_set_current_line(doc->sci, mline);
editor_display_current_line(doc, 0.5F);
}
- break;
+ return;
}
case GEANY_KEYS_GOTO_TAGDEFINITION:
if (check_current_word())
symbols_goto_tag(editor_info.current_word, TRUE);
- break;
+ return;
case GEANY_KEYS_GOTO_TAGDECLARATION:
if (check_current_word())
symbols_goto_tag(editor_info.current_word, FALSE);
- break;
+ return;
+ }
+ /* only check editor-sensitive keybindings when editor has focus */
+ if (gtk_window_get_focus(GTK_WINDOW(main_widgets.window)) != GTK_WIDGET(doc->sci))
+ {
+ ignore_keybinding = TRUE;
+ return;
+ }
+ switch (key_id)
+ {
case GEANY_KEYS_GOTO_LINESTART:
sci_cmd(doc->sci, editor_prefs.smart_home_key ? SCI_VCHOME : SCI_HOME);
break;
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