From 81e5a24390b06ec8f3d67272c7e284d37a18f3f2 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Thu, 18 Oct 2007 22:12:59 +0000 Subject: [PATCH] fix to PR 8900 svn: r7526 --- collects/framework/preferences.ss | 1 - collects/framework/private/preferences.ss | 18 +++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/collects/framework/preferences.ss b/collects/framework/preferences.ss index 9099202236..457f2d7866 100644 --- a/collects/framework/preferences.ss +++ b/collects/framework/preferences.ss @@ -156,7 +156,6 @@ the state transitions / contracts are: p value)])) ps values) - ((preferences:low-level-put-preferences) (map add-pref-prefix ps) (map (λ (p value) (marshall-pref p value)) diff --git a/collects/framework/private/preferences.ss b/collects/framework/private/preferences.ss index 64dba5f28f..c06af3a3f2 100644 --- a/collects/framework/private/preferences.ss +++ b/collects/framework/private/preferences.ss @@ -185,7 +185,7 @@ the state transitions / contracts are: (define (hide-dialog) (when preferences-dialog - (send preferences-dialog show #f))) + (send preferences-dialog close))) (define (show-dialog) (if preferences-dialog @@ -207,18 +207,23 @@ the state transitions / contracts are: (define (make-preferences-dialog) (letrec ([stashed-prefs (preferences:get-prefs-snapshot)] + [cancelled? #t] [frame-stashed-prefs% (class frame:basic% + (inherit close) (define/override (on-subwindow-char receiver event) (cond [(eq? 'escape (send event get-key-code)) - (cancel-callback)] + (close)] [else (super on-subwindow-char receiver event)])) (define/augment (on-close) - (cancel-callback)) + (when cancelled? + (preferences:restore-prefs-snapshot stashed-prefs))) (define/override (show 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))) (super show on?)) (super-new))] @@ -275,10 +280,9 @@ the state transitions / contracts are: (for-each (λ (f) (f)) on-close-dialog-callbacks) - (hide-dialog)))] - [cancel-callback (λ () - (hide-dialog) - (preferences:restore-prefs-snapshot stashed-prefs))]) + (set! cancelled? #f) + (send frame close)))] + [cancel-callback (λ () (send frame close))]) (new button% [label (string-constant revert-to-defaults)] [callback