From 454f0d6420a6d4a7e72491723266ced9242fdd87 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Tue, 25 Mar 2003 03:49:34 +0000 Subject: [PATCH] .. original commit: faa8326ba00e528c230d38f9dc4813239550df81 --- collects/framework/private/editor.ss | 22 +++++++++++----------- collects/framework/private/frame.ss | 22 ++++++++++++++++------ 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/collects/framework/private/editor.ss b/collects/framework/private/editor.ss index 6f9ce5ea..e4f12301 100644 --- a/collects/framework/private/editor.ss +++ b/collects/framework/private/editor.ss @@ -52,12 +52,12 @@ (opt-lambda ([input-filename #f] [fmt 'same] [show-errors? #t]) - (let ([filename (if (or (not input-filename) + (let ([filename (if (or (not input-filename) (equal? input-filename "")) (let ([internal-filename (get-filename)]) (if (or (not internal-filename) (equal? internal-filename "")) - (mred:get-file) + (put-file #f #f) internal-filename)) input-filename)]) (with-handlers ([not-break-exn? @@ -86,7 +86,7 @@ (let ([internal-filename (get-filename)]) (if (or (not internal-filename) (equal? internal-filename "")) - (mred:get-file) + (get-file #f) internal-filename)) input-filename)]) (with-handlers ([not-break-exn? @@ -299,14 +299,14 @@ [else (make-object editor-snip% (make-object pasteboard:basic%))]))] - (override get-file put-file) - [define get-file (lambda (d) - (parameterize ([finder:dialog-parent-parameter - (get-top-level-window)]) - (finder:get-file d)))] - [define put-file (lambda (d f) (parameterize ([finder:dialog-parent-parameter - (get-top-level-window)]) - (finder:put-file f d)))] + (define/override (get-file d) + (parameterize ([finder:dialog-parent-parameter + (get-top-level-window)]) + (finder:get-file d))) + (define/override (put-file d f) + (parameterize ([finder:dialog-parent-parameter + (get-top-level-window)]) + (finder:put-file f d))) (super-instantiate ()))) diff --git a/collects/framework/private/frame.ss b/collects/framework/private/frame.ss index f9ff1895..3292abe1 100644 --- a/collects/framework/private/frame.ss +++ b/collects/framework/private/frame.ss @@ -990,12 +990,22 @@ (define/public save-as (opt-lambda ([format 'same]) - (let* ([name (send (get-editor) get-filename)] - [file (parameterize ([finder:dialog-parent-parameter this]) - (finder:put-file name))]) - (if file - (send (get-editor) save-file/gui-error file format) - #f)))) + (let* ([editor (get-editor)] + [name (send editor get-filename)]) + (let-values ([(base name) + (if name + (let-values ([(base name dir?) (split-path name)]) + (values base name)) + (values #f #f))]) + (let ([file (send editor put-file name base)]) + (if file + (send editor save-file/gui-error file format) + #f)))))) + + (define/private (basename str) + (let-values ([(base name dir?) (split-path str)]) + base)) + (inherit get-checkable-menu-item% get-menu-item%) (override file-menu:save-callback file-menu:create-save? file-menu:save-as-callback file-menu:create-save-as?