chiark / gitweb /
Jonas Koelker points out that the backspace key didn't work in GTK
authorSimon Tatham <anakin@pobox.com>
Sun, 20 Dec 2009 10:01:57 +0000 (10:01 +0000)
committerSimon Tatham <anakin@pobox.com>
Sun, 20 Dec 2009 10:01:57 +0000 (10:01 +0000)
Guess, because Guess expected ^H whereas GTK generated ^?. Other
puzzles that use Backspace do it by being prepared to see either,
which seems wasteful. Now the midend normalises both into ^H, so
front ends can generate whichever they like while puzzles can
safely just look for ^H.

[originally from svn r8786]

filling.c
midend.c
solo.c
unequal.c

index 3fcc3b1528a1b8efdd267ca96cd13c8f6a09a5df..896fe411de057f4508010ad7d5635f4ba2964430 100644 (file)
--- a/filling.c
+++ b/filling.c
@@ -1097,7 +1097,6 @@ static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
       case '\r':
       case '\n':
       case '\b':
-      case '\177':
         button = 0;
         break;
       default:
index 323ac970283e45d4142e521fa82cac2bb0e7bd4a..1ba0fa35cc748e43372720811abd4324c849846e 100644 (file)
--- a/midend.c
+++ b/midend.c
@@ -752,6 +752,15 @@ int midend_process_key(midend *me, int x, int y, int button)
     if (button == ' ')
       button = CURSOR_SELECT2;
 
+    /*
+     * Normalise both backspace characters (8 and 127) to \b. Easier
+     * to do this once, here, than to require all front ends to
+     * carefully generate the same one - now each front end can
+     * generate whichever is easiest.
+     */
+    if (button == '\177')
+       button = '\b';
+
     /*
      * Now send on the event we originally received.
      */
diff --git a/solo.c b/solo.c
index 0970edad498348fba2a34d949ed7683d7454cff2..3d3fa8310df07b5440b41dfbd234dfad52ea4f27 100644 (file)
--- a/solo.c
+++ b/solo.c
@@ -4551,13 +4551,13 @@ static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
        ((button >= '0' && button <= '9' && button - '0' <= cr) ||
         (button >= 'a' && button <= 'z' && button - 'a' + 10 <= cr) ||
         (button >= 'A' && button <= 'Z' && button - 'A' + 10 <= cr) ||
-        button == CURSOR_SELECT2 || button == '\010' || button == '\177')) {
+        button == CURSOR_SELECT2 || button == '\b')) {
        int n = button - '0';
        if (button >= 'A' && button <= 'Z')
            n = button - 'A' + 10;
        if (button >= 'a' && button <= 'z')
            n = button - 'a' + 10;
-       if (button == CURSOR_SELECT2 || button == '\010' || button == '\177')
+       if (button == CURSOR_SELECT2 || button == '\b')
            n = 0;
 
         /*
index 26fcd418f6a86ab238a7345483294d38fa453dd1..35837c0474da71912e65271ad2a4b25d517a521f 100644 (file)
--- a/unequal.c
+++ b/unequal.c
@@ -392,7 +392,7 @@ static char n2c(digit n, int order) {
 static int c2n(int c, int order) {
     if (c < 0 || c > 0xff)
         return -1;
-    if (c == ' ' || c == '\010' || c == '\177')
+    if (c == ' ' || c == '\b')
         return 0;
     if (order < 10) {
         if (c >= '1' && c <= '9')