From cc9dc765c3bee3876cbbfd6dcfa8c9ce920e281a Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 11 Apr 2011 07:16:11 -0600 Subject: [PATCH] gtk: fix over-eager attempt at alt- menu activation Closes PR 11843 original commit: aabd5f7bd2e0b71ad218f9f0475abcd64e4b9afa --- collects/mred/private/wx/gtk/menu-bar.rkt | 14 +++++++++++++- collects/mred/private/wx/gtk/menu.rkt | 4 +++- collects/mred/private/wx/win32/menu.rkt | 3 ++- collects/mred/private/wxmenu.rkt | 4 +--- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/collects/mred/private/wx/gtk/menu-bar.rkt b/collects/mred/private/wx/gtk/menu-bar.rkt index 45ff8b43..29168c81 100644 --- a/collects/mred/private/wx/gtk/menu-bar.rkt +++ b/collects/mred/private/wx/gtk/menu-bar.rkt @@ -145,4 +145,16 @@ (g_object_ref gtk) (gtk_menu_item_set_submenu item gtk)) (gtk_menu_shell_append gtk item) - (gtk_widget_show item))))) + (gtk_widget_show item)))) + + (define/public (activate-item menu) + ;; Gtk takes care of menu activation as appropriate; + ;; return #f to indcate that the key wasn't handled + #f + #; + (let loop ([menus menus]) + (cond + [(null? menus) (void)] + [(eq? menu (cadar menus)) + (gtk_menu_shell_select_item gtk (caar menus))] + [else (loop (cdr menus))])))) diff --git a/collects/mred/private/wx/gtk/menu.rkt b/collects/mred/private/wx/gtk/menu.rkt index bd0481f2..a2f2e09d 100644 --- a/collects/mred/private/wx/gtk/menu.rkt +++ b/collects/mred/private/wx/gtk/menu.rkt @@ -237,7 +237,9 @@ (gtk_menu_shell_append gtk item-gtk) (gtk_widget_show item-gtk)))) - (def/public-unimplemented select) + (define/public (select bm) + (send parent activate-item this)) + (def/public-unimplemented get-font) (def/public-unimplemented set-width) (def/public-unimplemented set-title) diff --git a/collects/mred/private/wx/win32/menu.rkt b/collects/mred/private/wx/win32/menu.rkt index c14d1632..783e37bb 100644 --- a/collects/mred/private/wx/win32/menu.rkt +++ b/collects/mred/private/wx/win32/menu.rkt @@ -53,7 +53,8 @@ (when parent (let ([m (regexp-match #rx"&[^&]" label)]) (when m - (send parent popup-menu-with-char (string-ref (car m) 1)))))) + (send parent popup-menu-with-char (string-ref (car m) 1))))) + #t) (def/public-unimplemented get-font) (def/public-unimplemented set-width) diff --git a/collects/mred/private/wxmenu.rkt b/collects/mred/private/wxmenu.rkt index d0a00ff5..d4cd5df9 100644 --- a/collects/mred/private/wxmenu.rkt +++ b/collects/mred/private/wxmenu.rkt @@ -68,9 +68,7 @@ [label (mcar data)] [menu (mcdr data)]) (if (regexp-match re label) - (begin - (send menu select this) - #t) + (send menu select this) #f))) items)))))))))] [on-demand (lambda () (as-exit (lambda () (send mred on-demand))))]