changeset 25789:ea7eb09389dc

propagate from branch 'im.pidgin.pidgin' (head 9ef0eaddbc0c1196f6ceefc842c249f918d2e131) to branch 'im.pidgin.pidgin.next.minor' (head c6c01e07ada3a8808dad3309e7c8a6af938c0b1d)
author Richard Laager <rlaager@wiktel.com>
date Thu, 30 Oct 2008 20:10:26 +0000
parents 878ad37e5a18 (diff) ac967ea95b05 (current diff)
children 9ded0fb57e1c
files
diffstat 3 files changed, 17 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/.mtn-ignore	Thu Oct 30 20:08:29 2008 +0000
+++ b/.mtn-ignore	Thu Oct 30 20:10:26 2008 +0000
@@ -13,6 +13,7 @@
 intltool-.*
 Doxyfile(\.mingw)?$
 aclocal.m4
+autogen.args
 compile
 config.cache
 config.guess
--- a/ChangeLog	Thu Oct 30 20:08:29 2008 +0000
+++ b/ChangeLog	Thu Oct 30 20:10:26 2008 +0000
@@ -18,6 +18,10 @@
 	  of zero), add this to ~/.purple/gtkrc-2.0:
 	      gtk-enable-tooltips = 0
 
+	Finch:
+	* Allow binding meta+arrow keys for actions.
+
+
 version 2.5.2 (10/19/2008):
 	libpurple:
 	* Fixed a crash on removing a custom buddy icon on a buddy.
--- a/finch/libgnt/gntkeys.c	Thu Oct 30 20:08:29 2008 +0000
+++ b/finch/libgnt/gntkeys.c	Thu Oct 30 20:10:26 2008 +0000
@@ -102,7 +102,12 @@
 #define INSERT_COMB(k, code) do { \
 		snprintf(key, sizeof(key), "%s%s%s", controls[c], alts[a], k);  \
 		INSERT_KEY(key, code);  \
-	} while (0);
+	} while (0)
+#define INSERT_COMB_CODE(k, c1, c2) do { \
+		char __[32]; \
+		snprintf(__, sizeof(__), "%s%s", c1, c2); \
+		INSERT_COMB(k, __); \
+	} while (0)
 
 	/* Lower-case alphabets */
 	for (a = 0, c = 0; controls[c]; c++, a = 0) {
@@ -124,6 +129,10 @@
 			}
 			if (c == 0) {
 				INSERT_COMB("tab", "\033\t");
+				INSERT_COMB_CODE("up", "\033", GNT_KEY_UP);
+				INSERT_COMB_CODE("down", "\033", GNT_KEY_DOWN);
+				INSERT_COMB_CODE("left", "\033", GNT_KEY_LEFT);
+				INSERT_COMB_CODE("right", "\033", GNT_KEY_RIGHT);
 			}
 		}
 	}
@@ -144,6 +153,8 @@
 
 void gnt_keys_refine(char *text)
 {
+	while (*text == 27 && *(text + 1) == 27)
+		text++;
 	if (*text == 27 && *(text + 1) == '[' &&
 			(*(text + 2) >= 'A' && *(text + 2) <= 'D')) {
 		/* Apparently this is necessary for urxvt and screen and xterm */