avoid saving the preferences on each keystroke in the find/replace dialog

original commit: de0103129bb589fd59f618e117dde432ed1a6290
This commit is contained in:
Robby Findler 2010-12-01 14:09:03 -06:00
parent a82341289c
commit 726e476ea0

View File

@ -1693,15 +1693,22 @@
(define/augment (after-delete x y) (define/augment (after-delete x y)
(update-prefs) (update-prefs)
(inner (void) after-delete x y)) (inner (void) after-delete x y))
(define timer #f)
(define/private (update-prefs) (define/private (update-prefs)
(preferences:set pref-sym (unless timer
(let loop ([snip (find-first-snip)]) (set! timer (new timer%
(cond [notify-callback
[(not snip) '()] (λ ()
[(is-a? snip string-snip%) (preferences:set pref-sym
(cons (send snip get-text 0 (send snip get-count)) (let loop ([snip (find-first-snip)])
(loop (send snip next)))] (cond
[else (cons snip (loop (send snip next)))])))) [(not snip) '()]
[(is-a? snip string-snip%)
(cons (send snip get-text 0 (send snip get-count))
(loop (send snip next)))]
[else (cons snip (loop (send snip next)))]))))])))
(send timer stop)
(send timer start 150 #t))
(define/override (get-keymaps) (define/override (get-keymaps)
(editor:add-after-user-keymap search/replace-keymap (super get-keymaps))) (editor:add-after-user-keymap search/replace-keymap (super get-keymaps)))
(super-new) (super-new)