chiark / gitweb /
Generate special fake keypresses from menu options.
[sgt-puzzles.git] / midend.c
index 3059d6b81ea95c3f8020bd5a54919c0f0721849a..2edc1ec6ef4286a4124f7d2f440a0b2ed472dee2 100644 (file)
--- a/midend.c
+++ b/midend.c
@@ -590,33 +590,40 @@ static int midend_really_process_key(midend *me, int x, int y, int button)
     int type = MOVE, gottype = FALSE, ret = 1;
     float anim_time;
     game_state *s;
-    char *movestr;
-       
-    movestr =
-       me->ourgame->interpret_move(me->states[me->statepos-1].state,
-                                   me->ui, me->drawstate, x, y, button);
+    char *movestr = NULL;
+
+    if (!IS_UI_FAKE_KEY(button)) {
+        movestr = me->ourgame->interpret_move(
+            me->states[me->statepos-1].state,
+            me->ui, me->drawstate, x, y, button);
+    }
 
     if (!movestr) {
-       if (button == 'n' || button == 'N' || button == '\x0E') {
+       if (button == 'n' || button == 'N' || button == '\x0E' ||
+            button == UI_NEWGAME) {
            midend_new_game(me);
            midend_redraw(me);
            goto done;                 /* never animate */
        } else if (button == 'u' || button == 'U' ||
-                  button == '\x1A' || button == '\x1F') {
+                  button == '\x1A' || button == '\x1F' ||
+                   button == UI_UNDO) {
            midend_stop_anim(me);
            type = me->states[me->statepos-1].movetype;
            gottype = TRUE;
            if (!midend_undo(me))
                goto done;
        } else if (button == 'r' || button == 'R' ||
-                  button == '\x12' || button == '\x19') {
+                  button == '\x12' || button == '\x19' ||
+                   button == UI_REDO) {
            midend_stop_anim(me);
            if (!midend_redo(me))
                goto done;
-       } else if (button == '\x13' && me->ourgame->can_solve) {
+       } else if ((button == '\x13' || button == UI_SOLVE) &&
+                   me->ourgame->can_solve) {
            if (midend_solve(me))
                goto done;
-       } else if (button == 'q' || button == 'Q' || button == '\x11') {
+       } else if (button == 'q' || button == 'Q' || button == '\x11' ||
+                   button == UI_QUIT) {
            ret = 0;
            goto done;
        } else