diff --git a/collects/framework/private/frame.ss b/collects/framework/private/frame.ss index b9cd261e..8a23ad2f 100644 --- a/collects/framework/private/frame.ss +++ b/collects/framework/private/frame.ss @@ -1956,10 +1956,23 @@ (define/override (edit-menu:find-case-sensitive-on-demand item) (send item check case-sensitive-search?)) (define/override (edit-menu:create-find-case-sensitive?) #t) - (define/override (edit-menu:replace-all-callback menu evt) #t) + (define/override (edit-menu:replace-all-callback menu evt) (replace-all) #t) (define/override (edit-menu:replace-all-on-demand item) (send item enable (can-replace?))) (define/override (edit-menu:create-replace-all?) #t) + (define/override (edit-menu:create-toggle-find-focus?) #t) + (define/override (edit-menu:toggle-find-focus-callback menu evt) + (cond + [hidden? + (unhide-search #t)] + [(or (not text-to-search) + (send (send text-to-search get-canvas) has-focus?)) + (send find-canvas focus)] + [else + (let ([canvas (send text-to-search get-canvas)]) + (when canvas + (send canvas focus)))])) + (define/override make-root-area-container (λ (% parent) (let* ([s-root (super make-root-area-container diff --git a/collects/framework/private/standard-menus-items.ss b/collects/framework/private/standard-menus-items.ss index 7f29fe68..68a60f97 100644 --- a/collects/framework/private/standard-menus-items.ss +++ b/collects/framework/private/standard-menus-items.ss @@ -391,6 +391,18 @@ '(string-constant replace-all-menu-item) edit-menu:edit-target-on-demand #f) + (make-an-item 'edit-menu 'toggle-find-focus + '(string-constant toggle-find-focus-info) + '(λ (item control) (void)) + #\f + '(cons (case (system-type) + [(macosx) 'option] + [else 'alt]) + (get-default-shortcut-prefix)) + '(string-constant toggle-find-focus) + '(λ (item) (void)) + #f) + (make-a-checkable-item 'edit-menu 'find-case-sensitive '(string-constant find-case-sensitive-info) '(λ (item control) (void)) diff --git a/collects/scribblings/framework/frame.scrbl b/collects/scribblings/framework/frame.scrbl index a769e0fc..f5b39912 100644 --- a/collects/scribblings/framework/frame.scrbl +++ b/collects/scribblings/framework/frame.scrbl @@ -1026,7 +1026,15 @@ framework)) @(require (for-label scheme/gui)) @(require Checks @scheme[item] when searching is case-sensitive and unchecks it otherwise. } - @defmethod*[#:mode override (((edit-menu:create-find-case-sensitive) boolean?))]{ + @defmethod*[#:mode override (((edit-menu:create-find-case-sensitive?) boolean?))]{ + + returns @scheme[#t]. + } + + @defmethod*[#:mode override (((edit-menu:toggle-find-focus-callback) boolean?))]{ + toggles the focus between the find window and the window being searched. + } + @defmethod*[#:mode override (((edit-menu:create-toggle-find-focus?) boolean?))]{ returns @scheme[#t]. }