changeset 944:aec71ebf98fa

Fix Meta + UTF-8 character
author Mikael Berthe <mikael@lilotux.net>
date Wed, 09 Aug 2006 20:26:06 +0200
parents 9ac0d166a85b
children 17ef145f3326
files mcabber/src/screen.c
diffstat 1 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/screen.c	Sat Jul 15 12:46:39 2006 +0200
+++ b/mcabber/src/screen.c	Wed Aug 09 20:26:06 2006 +0200
@@ -2349,7 +2349,13 @@
 
   kcode->value = wgetch(inputWnd);
   if (utf8_mode) {
-    ks[0] = kcode->value;
+    bool meta = (kcode->value == 27);
+
+    if (meta)
+      ks[0] = wgetch(inputWnd);
+    else
+      ks[0] = kcode->value;
+
     for (i = 0; i < MAX_KEYSEQ_LENGTH - 1; i++) {
       int match = match_utf8_keyseq(ks);
       if (match == -1)
@@ -2357,6 +2363,8 @@
       if (match > 0) {
         kcode->value = match;
         kcode->utf8 = 1;
+        if (meta)
+          kcode->mcode = MKEY_META;
         return;
       }
       ks[i + 1] = wgetch(inputWnd);
@@ -2365,6 +2373,8 @@
     }
     while (i > 0)
       ungetch(ks[i--]);
+    if (meta)
+      ungetch(ks[0]);
     memset(ks,  0, sizeof(ks));
   }
   if (kcode->value != 27)