diff --git a/gui-lib/framework/private/keymap.rkt b/gui-lib/framework/private/keymap.rkt index 42637936..584eaf19 100644 --- a/gui-lib/framework/private/keymap.rkt +++ b/gui-lib/framework/private/keymap.rkt @@ -194,7 +194,7 @@ (define/private (all-but-last l) (cond [(null? l) l] - [(null? (cdr l)) l] + [(null? (cdr l)) '()] [else (cons (car l) (all-but-last (cdr l)))])) (super-new))) diff --git a/gui-test/framework/tests/keys.rkt b/gui-test/framework/tests/keys.rkt index b635de3c..b672495a 100644 --- a/gui-test/framework/tests/keys.rkt +++ b/gui-test/framework/tests/keys.rkt @@ -74,6 +74,21 @@ (send k map-function "ESC;p" "abc-k2") (send k chain-to-keymap k1 #t) (hash-map (send k get-map-function-table) list))))) + +(test + 'keymap:aug-keymap%/all-but-last-bug + (lambda (x) + (equal? x '((s:a "shift-ah") (s:m "shift-em")))) + (lambda () + (queue-sexp-to-mred + '(let ([k (make-object keymap:aug-keymap%)]) + (send k add-function "shift-em" void) + (send k add-function "shift-ah" void) + (send k map-function "s:m" "shift-em") + (send k map-function "s:a" "shift-ah") + (sort (hash-map (send k get-map-function-table) list) + string