SF.net SVN: geany:[4556] branches/geany-0.18.1

eht16 at users.sourceforge.net eht16 at xxxxx
Mon Jan 25 21:15:17 UTC 2010


Revision: 4556
          http://geany.svn.sourceforge.net/geany/?rev=4556&view=rev
Author:   eht16
Date:     2010-01-25 21:15:17 +0000 (Mon, 25 Jan 2010)

Log Message:
-----------
Backport from trunk:
Fix non-working Home and End keys on numpads.

Modified Paths:
--------------
    branches/geany-0.18.1/ChangeLog
    branches/geany-0.18.1/src/keybindings.c

Modified: branches/geany-0.18.1/ChangeLog
===================================================================
--- branches/geany-0.18.1/ChangeLog	2010-01-25 20:38:17 UTC (rev 4555)
+++ branches/geany-0.18.1/ChangeLog	2010-01-25 21:15:17 UTC (rev 4556)
@@ -1,3 +1,9 @@
+2009-08-18  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
+
+ * src/keybindings.c:
+   Fix non-working Home and End keys on numpads.
+
+
 2009-08-17  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
 
  * doc/geany.txt:

Modified: branches/geany-0.18.1/src/keybindings.c
===================================================================
--- branches/geany-0.18.1/src/keybindings.c	2010-01-25 20:38:17 UTC (rev 4555)
+++ branches/geany-0.18.1/src/keybindings.c	2010-01-25 21:15:17 UTC (rev 4556)
@@ -1077,6 +1077,37 @@
 #endif
 
 
+/* Map the keypad keys to their equivalent functions (taken from ScintillaGTK.cxx) */
+static guint key_kp_translate(guint key_in)
+{
+	switch (key_in)
+	{
+		case GDK_KP_Down:
+			return GDK_Down;
+		case GDK_KP_Up:
+			return GDK_Up;
+		case GDK_KP_Left:
+			return GDK_Left;
+		case GDK_KP_Right:
+			return GDK_Right;
+		case GDK_KP_Home:
+			return GDK_Home;
+		case GDK_KP_End:
+			return GDK_End;
+		case GDK_KP_Page_Up:
+			return GDK_Page_Up;
+		case GDK_KP_Page_Down:
+			return GDK_Page_Down;
+		case GDK_KP_Delete:
+			return GDK_Delete;
+		case GDK_KP_Insert:
+			return GDK_Insert;
+		default:
+			return key_in;
+	}
+}
+
+
 /* central keypress event handler, almost all keypress events go to this function */
 static gboolean on_key_press_event(GtkWidget *widget, GdkEventKey *ev, gpointer user_data)
 {
@@ -1101,6 +1132,9 @@
 		if (keyval >= GDK_A && keyval <= GDK_Z)
 			keyval += GDK_a - GDK_A;
 
+	if (keyval >= GDK_KP_Space && keyval < GDK_KP_Equal)
+		keyval = key_kp_translate(keyval);
+
 	/*geany_debug("%d (%d) %d (%d)", keyval, ev->keyval, state, ev->state);*/
 
 	/* special cases */


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