diff --git a/collects/mred/private/wx/win32/frame.rkt b/collects/mred/private/wx/win32/frame.rkt index 4bbfcddf5a..0c42e5d03e 100644 --- a/collects/mred/private/wx/win32/frame.rkt +++ b/collects/mred/private/wx/win32/frame.rkt @@ -500,6 +500,9 @@ (define/public (set-title s) (atomically (set! saved-title s) - (SetWindowTextW (get-hwnd) (string-append s (if modified? "*" "")))))) + (SetWindowTextW (get-hwnd) (string-append s (if modified? "*" ""))))) + (define/public (popup-menu-with-char c) + (DefWindowProcW hwnd WM_SYSKEYDOWN (char->integer c) (arithmetic-shift 1 29)) + (DefWindowProcW hwnd WM_SYSCHAR (char->integer c) (arithmetic-shift 1 29)))) diff --git a/collects/mred/private/wx/win32/key.rkt b/collects/mred/private/wx/win32/key.rkt index 4ad9446f91..e394a6b4f0 100644 --- a/collects/mred/private/wx/win32/key.rkt +++ b/collects/mred/private/wx/win32/key.rkt @@ -224,8 +224,8 @@ key-id)] [shift-down shift-down?] [control-down control-down?] - [meta-down #f] - [alt-down alt-down?] + [meta-down alt-down?] + [alt-down #f] [x 0] [y 0] [time-stamp 0] diff --git a/collects/mred/private/wx/win32/menu-bar.rkt b/collects/mred/private/wx/win32/menu-bar.rkt index cdbf1c0fff..089b8301a8 100644 --- a/collects/mred/private/wx/win32/menu-bar.rkt +++ b/collects/mred/private/wx/win32/menu-bar.rkt @@ -55,6 +55,10 @@ (send m set-parent this lbl hmenu))) (refresh)) + (define/public (popup-menu-with-char c) + (when parent + (send parent popup-menu-with-char c))) + (define/public (set-parent f) (SetMenu (send f get-hwnd) hmenu) (set! parent f) diff --git a/collects/mred/private/wx/win32/menu.rkt b/collects/mred/private/wx/win32/menu.rkt index 1686660a1a..c14d163253 100644 --- a/collects/mred/private/wx/win32/menu.rkt +++ b/collects/mred/private/wx/win32/menu.rkt @@ -49,7 +49,12 @@ hmenu lbl)) - (def/public-unimplemented select) + (define/public (select mb) + (when parent + (let ([m (regexp-match #rx"&[^&]" label)]) + (when m + (send parent popup-menu-with-char (string-ref (car m) 1)))))) + (def/public-unimplemented get-font) (def/public-unimplemented set-width) (def/public-unimplemented set-title)