From cd1fb5bea9e946fbf69d61af7022f2382a3883eb Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 16 Oct 2010 20:31:24 -0600 Subject: [PATCH] change DrRacket to aviod rebuilding some menus unnecessarily --- collects/drracket/private/unit.rkt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/collects/drracket/private/unit.rkt b/collects/drracket/private/unit.rkt index 30f7a903d7..591e311d59 100644 --- a/collects/drracket/private/unit.rkt +++ b/collects/drracket/private/unit.rkt @@ -3441,10 +3441,12 @@ module browser threading seems wrong. (hash-set! capability-menu-items menu (cons this-one old-ones))))) (define/private (update-items/capability menu) - (let ([new-items (begin '(get-items/capability menu) - (send menu get-items))]) - (for-each (λ (i) (send i delete)) (send menu get-items)) - (for-each (λ (i) (send i restore)) new-items))) + (let* ([old-items (send menu get-items)] + [new-items (begin '(get-items/capability menu) + old-items)]) + (unless (equal? old-items new-items) + (for-each (λ (i) (send i delete)) old-items) + (for-each (λ (i) (send i restore)) new-items)))) (define/private (get-items/capability menu) (let loop ([capability-items (reverse (hash-ref capability-menu-items menu '()))] [all-items (send menu get-items)]