diff --git a/example1/example.rkt b/example1/example.rkt index bf7a966..26c2812 100644 --- a/example1/example.rkt +++ b/example1/example.rkt @@ -18,20 +18,21 @@ (define-runtime-path html-start "example-1.html") (define-runtime-path dialog-html "example-1-dialog.html") -(define test-menu (menu (menu-item 'm-file "File" +(define test-menu (menu 'main-menu + (menu-item 'm-file "File" #:submenu (menu (menu-item 'm-open "Open File") (menu-item 'm-close "Close File") (menu-item 'm-select-dir "Select Folder" #:separator #t) (menu-item 'm-quit "Quit" #:separator #t))) - (menu-item 'm-edit "Edit" + (menu-item 'm-edit "Edit" #:submenu (menu (menu-item 'm-copy "Copy") (menu-item 'm-cut "Cut") (menu-item 'm-paste "Paste") (menu-item 'm-prefs "Preferences" #:separator #t) )) - (menu-item 'm-auto "Processes" + (menu-item 'm-auto "Processes" #:submenu (menu (menu-item 'm-start "Start counter") (menu-item 'm-sub "Submenu" diff --git a/private/menu.rkt b/private/menu.rkt index 651a323..98634a7 100644 --- a/private/menu.rkt +++ b/private/menu.rkt @@ -21,7 +21,7 @@ #:transparent) (define-struct ww-menu - ([items #:mutable]) + (id [items #:mutable]) #:transparent ) diff --git a/private/web-racket.rkt b/private/web-racket.rkt index d38b07c..a6a5b5f 100644 --- a/private/web-racket.rkt +++ b/private/web-racket.rkt @@ -608,7 +608,8 @@ (hash-set! menu-cbs id cb)) (define/public (disconnect-menu! id) - (hash-remove! menu-cbs id)) + (hash-remove! menu-cbs id) + ) (define/public (popup-menu menu-def x y) (ww-popup-menu win-id menu-def x y) @@ -625,6 +626,8 @@ (send this connect-menu! id (λ () (clear-connections) (cb)))))) + (connect-menu! (ww-menu-id menu-def) (λ () (clear-connections))) + (set! ids (cons (ww-menu-id menu-def) ids)) ) )