fix to PR 8900

svn: r7526
This commit is contained in:
Robby Findler 2007-10-18 22:12:59 +00:00
parent 012895cbfe
commit 81e5a24390
2 changed files with 11 additions and 8 deletions

View File

@ -156,7 +156,6 @@ the state transitions / contracts are:
p p
value)])) value)]))
ps values) ps values)
((preferences:low-level-put-preferences) ((preferences:low-level-put-preferences)
(map add-pref-prefix ps) (map add-pref-prefix ps)
(map (λ (p value) (marshall-pref p value)) (map (λ (p value) (marshall-pref p value))

View File

@ -185,7 +185,7 @@ the state transitions / contracts are:
(define (hide-dialog) (define (hide-dialog)
(when preferences-dialog (when preferences-dialog
(send preferences-dialog show #f))) (send preferences-dialog close)))
(define (show-dialog) (define (show-dialog)
(if preferences-dialog (if preferences-dialog
@ -207,18 +207,23 @@ the state transitions / contracts are:
(define (make-preferences-dialog) (define (make-preferences-dialog)
(letrec ([stashed-prefs (preferences:get-prefs-snapshot)] (letrec ([stashed-prefs (preferences:get-prefs-snapshot)]
[cancelled? #t]
[frame-stashed-prefs% [frame-stashed-prefs%
(class frame:basic% (class frame:basic%
(inherit close)
(define/override (on-subwindow-char receiver event) (define/override (on-subwindow-char receiver event)
(cond (cond
[(eq? 'escape (send event get-key-code)) [(eq? 'escape (send event get-key-code))
(cancel-callback)] (close)]
[else [else
(super on-subwindow-char receiver event)])) (super on-subwindow-char receiver event)]))
(define/augment (on-close) (define/augment (on-close)
(cancel-callback)) (when cancelled?
(preferences:restore-prefs-snapshot stashed-prefs)))
(define/override (show on?) (define/override (show on?)
(when on? (when on?
;; reset the flag and save new prefs when the window becomes visible
(set! cancelled? #t)
(set! stashed-prefs (preferences:get-prefs-snapshot))) (set! stashed-prefs (preferences:get-prefs-snapshot)))
(super show on?)) (super show on?))
(super-new))] (super-new))]
@ -275,10 +280,9 @@ the state transitions / contracts are:
(for-each (for-each
(λ (f) (f)) (λ (f) (f))
on-close-dialog-callbacks) on-close-dialog-callbacks)
(hide-dialog)))] (set! cancelled? #f)
[cancel-callback (λ () (send frame close)))]
(hide-dialog) [cancel-callback (λ () (send frame close))])
(preferences:restore-prefs-snapshot stashed-prefs))])
(new button% (new button%
[label (string-constant revert-to-defaults)] [label (string-constant revert-to-defaults)]
[callback [callback