SF.net SVN: geany:[4103] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Mon Aug 17 22:04:13 UTC 2009


Revision: 4103
          http://geany.svn.sourceforge.net/geany/?rev=4103&view=rev
Author:   eht16
Date:     2009-08-17 22:04:13 +0000 (Mon, 17 Aug 2009)

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

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/editor.c
    trunk/src/keybindings.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2009-08-17 15:07:59 UTC (rev 4102)
+++ trunk/ChangeLog	2009-08-17 22:04:13 UTC (rev 4103)
@@ -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, doc/geany.html, NEWS:

Modified: trunk/src/editor.c
===================================================================
--- trunk/src/editor.c	2009-08-17 15:07:59 UTC (rev 4102)
+++ trunk/src/editor.c	2009-08-17 22:04:13 UTC (rev 4103)
@@ -4567,7 +4567,7 @@
 	sci_clear_cmdkey(sci, '\\' | (SCMOD_CTRL << 16)); /* Next word part */
 	sci_clear_cmdkey(sci, SCK_UP | (SCMOD_CTRL << 16)); /* scroll line up */
 	sci_clear_cmdkey(sci, SCK_DOWN | (SCMOD_CTRL << 16)); /* scroll line down */
-	sci_clear_cmdkey(sci, SCK_HOME);	/* line start */
+	sci_clear_cmdkey(sci, SCK_HOME); /* line start */
 	sci_clear_cmdkey(sci, SCK_END);	/* line end */
 	sci_clear_cmdkey(sci, SCK_END | (SCMOD_ALT << 16));	/* visual line end */
 

Modified: trunk/src/keybindings.c
===================================================================
--- trunk/src/keybindings.c	2009-08-17 15:07:59 UTC (rev 4102)
+++ trunk/src/keybindings.c	2009-08-17 22:04:13 UTC (rev 4103)
@@ -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