From c60450b8aa7916312f6541c7711331236ce9c660 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Wed, 11 Feb 2004 22:57:32 +0000 Subject: [PATCH] . original commit: b683dc2d460ca6f6d2ad505d5e815dcc9132e7a3 --- collects/framework/private/editor.ss | 32 ++++++++++++++++++++++------ collects/framework/private/frame.ss | 7 +++--- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/collects/framework/private/editor.ss b/collects/framework/private/editor.ss index 15c89d35..972ce239 100644 --- a/collects/framework/private/editor.ss +++ b/collects/framework/private/editor.ss @@ -389,7 +389,10 @@ (preferences:get 'framework:auto-set-wrap?)))) - (define file<%> (interface (-keymap<%>))) + (define file<%> + (interface (-keymap<%>) + get-filename/untitled-name + update-frame-filename)) (define file-mixin (mixin (-keymap<%>) (file<%>) (inherit get-filename lock get-style-list @@ -412,16 +415,31 @@ (file-or-directory-permissions filename))))]) (lock lock?))) - (define/private (update-filename name) - (let ([filename (if name - (file-name-from-path (normalize-path name)) - (gui-utils:next-untitled-name))]) + + (define/public (update-frame-filename) + (let* ([filename (get-filename)] + [name (if filename + (file-name-from-path (normalize-path filename)) + (get-filename/untitled-name))]) (for-each (lambda (canvas) (let ([tlw (send canvas get-top-level-window)]) (when (and (is-a? tlw frame:editor<%>) (eq? this (send tlw get-editor))) - (send tlw set-label filename)))) + (send tlw set-label name)))) (get-canvases)))) + + ;; get-filename/untitled-name : -> string + ;; returns a string representing the visible name for this file, + ;; or "Untitled " for some n. + (define untitled-name #f) + (define/public (get-filename/untitled-name) + (let ([filename (get-filename)]) + (if filename + filename + (begin + (unless untitled-name + (set! untitled-name (gui-utils:next-untitled-name))) + untitled-name)))) (define/override (after-save-file success) (when success (check-lock)) @@ -438,7 +456,7 @@ [(name temp?) (super-set-filename name temp?) (unless temp? - (update-filename name))])) + (update-frame-filename))])) (define/override (get-keymaps) (cons (keymap:get-file) (super-get-keymaps))) diff --git a/collects/framework/private/frame.ss b/collects/framework/private/frame.ss index 671e47a1..79c14387 100644 --- a/collects/framework/private/frame.ss +++ b/collects/framework/private/frame.ss @@ -1166,10 +1166,9 @@ [else (void)]) (let ([ed-fn (send (get-editor) get-filename)]) - (set! label (if ed-fn - (or (file-name-from-path ed-fn) - (gui-utils:next-untitled-name)) - (gui-utils:next-untitled-name)))) + (set! label (or (and ed-fn + (file-name-from-path ed-fn)) + (send (get-editor) get-filename/untitled-name)))) (do-label) (let ([canvas (get-canvas)]) (when (is-a? canvas editor-canvas%)