diff --git a/collects/framework/private/editor.ss b/collects/framework/private/editor.ss index 9b6e8e15..2c62a56d 100644 --- a/collects/framework/private/editor.ss +++ b/collects/framework/private/editor.ss @@ -24,7 +24,8 @@ [text : framework:text^] [pasteboard : framework:pasteboard^] [frame : framework:frame^] - [gui-utils : framework:gui-utils^]) + [gui-utils : framework:gui-utils^] + [handler : framework:handler^]) (rename [-keymap<%> keymap<%>]) @@ -96,6 +97,12 @@ (let ([ms (file-or-directory-modify-seconds fn)]) (< last-saved-file-time ms))))))] + (rename [super-on-save-file on-save-file]) + (define/override (on-save-file filename format) + (unless (equal? filename (get-filename)) + (handler:add-to-recent filename)) + (super-on-save-file filename format)) + [define has-focus #f] (rename [super-on-focus on-focus]) (override on-focus) diff --git a/collects/framework/private/handler.ss b/collects/framework/private/handler.ss index 724d58ea..ef3312b3 100644 --- a/collects/framework/private/handler.ss +++ b/collects/framework/private/handler.ss @@ -2,6 +2,7 @@ (require (lib "unitsig.ss") (lib "class.ss") (lib "class100.ss") + (lib "list.ss") "sig.ss" "../gui-utils-sig.ss" (lib "mred-sig.ss" "mred") @@ -129,9 +130,11 @@ (define (add-to-recent filename) (preferences:set 'framework:recently-opened-files (let loop ([n recent-max-count] - [new-recent (cons filename - (preferences:get - 'framework:recently-opened-files))]) + [new-recent (cons filename + (remove + filename + (preferences:get + 'framework:recently-opened-files)))]) (cond [(zero? n) null] [(null? new-recent) null] diff --git a/collects/framework/private/sig.ss b/collects/framework/private/sig.ss index e69447d1..0eb38d1e 100644 --- a/collects/framework/private/sig.ss +++ b/collects/framework/private/sig.ss @@ -231,13 +231,16 @@ get-the-frame-group)) (define-signature framework:handler^ - (handler? handler-name handler-extension handler-handler - insert-format-handler - find-format-handler - find-named-format-handler - edit-file - open-file - install-recent-items)) + (handler? + handler-name + handler-extension handler-handler + insert-format-handler + find-format-handler + find-named-format-handler + edit-file + open-file + install-recent-items + add-to-recent)) (define-signature framework:icon^ (get-paren-highlight-bitmap