SF.net SVN: geany: [1842] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Thu Aug 30 14:07:49 UTC 2007
Revision: 1842
http://geany.svn.sourceforge.net/geany/?rev=1842&view=rev
Author: ntrel
Date: 2007-08-30 07:07:49 -0700 (Thu, 30 Aug 2007)
Log Message:
-----------
Fix Ctrl-Shift bindings not working when caps lock is on.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/keybindings.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2007-08-30 10:33:09 UTC (rev 1841)
+++ trunk/ChangeLog 2007-08-30 14:07:49 UTC (rev 1842)
@@ -7,6 +7,8 @@
geany.conf in 'Hidden preferences' appendix.
* src/keybindings.c:
Rename non-menu keybinding titles, e.g. Tags menu -> Tags commands.
+ * src/keybindings.c:
+ Fix Ctrl-Shift bindings not working when caps lock is on.
2007-08-29 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
Modified: trunk/src/keybindings.c
===================================================================
--- trunk/src/keybindings.c 2007-08-30 10:33:09 UTC (rev 1841)
+++ trunk/src/keybindings.c 2007-08-30 14:07:49 UTC (rev 1842)
@@ -643,12 +643,16 @@
/* central keypress event handler, almost all keypress events go to this function */
gboolean keybindings_got_event(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
{
- guint i, k;
+ guint i, keyval = event->keyval;
- if (event->keyval == 0)
+ if (keyval == 0)
return FALSE;
- // ignore caps-lock
+ // hack to get around that CTRL+Shift+r results in GDK_R not GDK_r
+ if (event->state & GDK_SHIFT_MASK || event->state & GDK_LOCK_MASK)
+ if (keyval >= GDK_A && keyval <= GDK_Z)
+ keyval += GDK_a - GDK_A;
+ // now ignore caps-lock
if (event->state & GDK_LOCK_MASK)
event->state -= GDK_LOCK_MASK;
// ignore numlock key, not necessary but nice
@@ -663,18 +667,8 @@
for (i = 0; i < GEANY_MAX_KEYS; i++)
{
- // ugly hack to get around that CTRL+Shift+r results in 'R' not 'r'
- k = keys[i]->key;
- if (event->state & GDK_SHIFT_MASK)
+ if (keyval == keys[i]->key && event->state == keys[i]->mods)
{
- // skip entries which don't include SHIFT
- if (! (keys[i]->mods & GDK_SHIFT_MASK)) continue;
- // raise the keyval
- if (keys[i]->key >= GDK_a && keys[i]->key <= GDK_z) k = keys[i]->key - 32;
- }
-
- if (event->keyval == k && event->state == keys[i]->mods)
- {
if (keys[i]->cb_func == NULL)
return FALSE; // ignore the keybinding
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