change DrRacket to aviod rebuilding some menus unnecessarily

This commit is contained in:
Matthew Flatt 2010-10-16 20:31:24 -06:00
parent cafc6d697e
commit cd1fb5bea9

View File

@ -3441,10 +3441,12 @@ module browser threading seems wrong.
(hash-set! capability-menu-items menu (cons this-one old-ones))))) (hash-set! capability-menu-items menu (cons this-one old-ones)))))
(define/private (update-items/capability menu) (define/private (update-items/capability menu)
(let ([new-items (begin '(get-items/capability menu) (let* ([old-items (send menu get-items)]
(send menu get-items))]) [new-items (begin '(get-items/capability menu)
(for-each (λ (i) (send i delete)) (send menu get-items)) old-items)])
(for-each (λ (i) (send i restore)) new-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) (define/private (get-items/capability menu)
(let loop ([capability-items (reverse (hash-ref capability-menu-items menu '()))] (let loop ([capability-items (reverse (hash-ref capability-menu-items menu '()))]
[all-items (send menu get-items)] [all-items (send menu get-items)]