diff --git a/collects/framework/framework.ss b/collects/framework/framework.ss index 0cf23f8f19..41da6c4387 100644 --- a/collects/framework/framework.ss +++ b/collects/framework/framework.ss @@ -685,6 +685,14 @@ "This is useful in conjunction with the " "frame classes. After instantiating the class and adding ones own menus," "the menus will be mis-ordered. This function fixes them up.") + + (frame:remove-empty-menus + ((is-a?/c frame%) . -> . void?) + (frame) + "Removes empty menus in a frame." + "" + "This is useful if you have code that might leave empty menus.") + (group:get-the-frame-group (-> (is-a?/c group:%)) () diff --git a/collects/framework/private/frame.ss b/collects/framework/private/frame.ss index 635fed9737..d89e0dbeee 100644 --- a/collects/framework/private/frame.ss +++ b/collects/framework/private/frame.ss @@ -49,13 +49,19 @@ [help-menu (find-menu (string-constant help-menu))] [other-items (remq* (list file-menu edit-menu windows-menu help-menu) items)] - [? (λ (menu) (and menu (pair? (send menu get-items)) menu))] - [re-ordered (filter values `(,(? file-menu) ,(? edit-menu) + [re-ordered (filter values `(,file-menu ,edit-menu ,@other-items - ,(? windows-menu) ,(? help-menu)))]) + ,windows-menu ,help-menu))]) (for-each (λ (item) (send item delete)) items) (for-each (λ (item) (send item restore)) re-ordered))) + (define (remove-empty-menus frame) + (define menus (send (send frame get-menu-bar) get-items)) + (for-each (λ (menu) (send menu delete)) menus) + (for-each (λ (menu) + (when (pair? (send menu get-items)) (send menu restore))) + menus)) + (define (add-snip-menu-items edit-menu c%) (let* ([get-edit-target-object (λ () diff --git a/collects/framework/private/sig.ss b/collects/framework/private/sig.ss index 26a2b51420..10298bc31c 100644 --- a/collects/framework/private/sig.ss +++ b/collects/framework/private/sig.ss @@ -417,6 +417,7 @@ pasteboard-info-mixin)) (define-signature framework:frame-fun^ (reorder-menus + remove-empty-menus add-snip-menu-items setup-size-pref)) (define-signature framework:frame^ diff --git a/collects/help/bug-report.ss b/collects/help/bug-report.ss index 865e6b2abf..9836c23e48 100644 --- a/collects/help/bug-report.ss +++ b/collects/help/bug-report.ss @@ -506,6 +506,9 @@ (send (send collections get-editor) auto-wrap #t) (send (send docs-installed get-editor) auto-wrap #t) + ;; Currently, the help-menu is left empty + (frame:remove-empty-menus bug-frame) + (align-labels) (switch-to-compose-view)