diff --git a/pkgs/gui-pkgs/gui-lib/mred/private/wxme/keymap.rkt b/pkgs/gui-pkgs/gui-lib/mred/private/wxme/keymap.rkt index 426f23b9..7e42e206 100644 --- a/pkgs/gui-pkgs/gui-lib/mred/private/wxme/keymap.rkt +++ b/pkgs/gui-pkgs/gui-lib/mred/private/wxme/keymap.rkt @@ -138,7 +138,8 @@ get-best-score chain-handle-mouse-event get-best-mouse-score - cycle-check) + cycle-check + chain-check-grab) (defclass keymap% object% @@ -462,7 +463,8 @@ (eq? code 'control) (eq? code 'rcontrol) (eq? code 'release)) - prefixed? + (or prefixed? + (chain-check-grab obj event)) (let ([score (get-best-score code (send event get-other-shift-key-code) @@ -556,6 +558,11 @@ 1 result))))))))) + (define/public (chain-check-grab obj event) + (or (and grab-key-function #t) + (for/or ([c (in-list chain-to)]) + (send c chain-check-grab obj event)))) + (def/public (set-grab-mouse-function [(make-procedure 4) grab]) (set! grab-mouse-function grab))