From c45658a668638d70e67752ab896cf2ee0f372049 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Sun, 27 Jul 2008 03:43:36 +0000 Subject: [PATCH] adjusted the keybindings for search a little bit svn: r10931 original commit: 12d18d8107b7ffc64bc533afcef87efc7cd0a9d9 --- collects/framework/private/frame.ss | 87 ++++++++++------------ collects/scribblings/framework/frame.scrbl | 18 +++-- 2 files changed, 50 insertions(+), 55 deletions(-) diff --git a/collects/framework/private/frame.ss b/collects/framework/private/frame.ss index 13c5ac2a..b9cd261e 100644 --- a/collects/framework/private/frame.ss +++ b/collects/framework/private/frame.ss @@ -2004,7 +2004,7 @@ (send canvas focus)))) (set! hidden? #t)) - (define/public (unhide-search) + (define/public (unhide-search focus?) (when hidden? (set! hidden? #f) (build-search-gui-in-frame) @@ -2012,7 +2012,8 @@ (send find-edit text-to-search-changed #f text-to-search) (unless (memq search/replace-panel (send super-root get-children)) (send super-root add-child search/replace-panel)) - (send (send find-edit get-canvas) focus))) + (when focus? + (send (send find-edit get-canvas) focus)))) (define/public (can-replace?) (let ([tx (get-text-to-search)]) @@ -2029,24 +2030,17 @@ (send find-edit get-text 0 (send find-edit last-position)))))))) (define/public (search searching-direction) - (cond - [hidden? - (unhide-search)] - [else - (send find-edit search searching-direction #t) - (void)])) + (unhide-search #f) + (send find-edit search searching-direction #t)) (define/public (replace&search dir) - (cond - [hidden? - (unhide-search)] - [else - (let ([text (get-text-to-search)]) - (when text - (send text begin-edit-sequence) - (when (replace) - (search dir)) - (send text end-edit-sequence)))])) + (unhide-search #f) + (let ([text (get-text-to-search)]) + (when text + (send text begin-edit-sequence) + (when (replace) + (search dir)) + (send text end-edit-sequence)))) (define/private (replace) (let ([replacee-text (let ([txt (get-text-to-search)]) @@ -2075,36 +2069,33 @@ (loop prev))]))) (define/public (replace-all) - (cond - [hidden? - (unhide-search)] - [else - (let ([txt (get-text-to-search)]) - (when txt - (let ([search-str (send find-edit get-text)] - [ht (make-hasheq)]) - (send txt begin-edit-sequence) - (hash-set! ht txt #t) - (let loop ([txt (pop-all-the-way-out txt)] - [pos 0]) - (let-values ([(found-txt found-pos) (find-string-embedded txt - search-str - 'forward - pos - 'eof - #f - case-sensitive-search? - #t)]) - (cond - [found-pos - (unless (hash-ref ht txt #f) - (hash-set! ht txt #t) - (send txt begin-edit-sequence)) - (send found-txt set-position (- found-pos (string-length search-str)) found-pos) - (replace) - (loop found-txt (send found-txt get-end-position))] - [else (void)]))) - (hash-for-each ht (λ (txt _) (send txt end-edit-sequence))))))])) + (unhide-search #f) + (let ([txt (get-text-to-search)]) + (when txt + (let ([search-str (send find-edit get-text)] + [ht (make-hasheq)]) + (send txt begin-edit-sequence) + (hash-set! ht txt #t) + (let loop ([txt (pop-all-the-way-out txt)] + [pos 0]) + (let-values ([(found-txt found-pos) (find-string-embedded txt + search-str + 'forward + pos + 'eof + #f + case-sensitive-search? + #t)]) + (cond + [found-pos + (unless (hash-ref ht txt #f) + (hash-set! ht txt #t) + (send txt begin-edit-sequence)) + (send found-txt set-position (- found-pos (string-length search-str)) found-pos) + (replace) + (loop found-txt (send found-txt get-end-position))] + [else (void)]))) + (hash-for-each ht (λ (txt _) (send txt end-edit-sequence))))))) (define/private (pop-all-the-way-out txt) (let ([admin (send txt get-admin)]) diff --git a/collects/scribblings/framework/frame.scrbl b/collects/scribblings/framework/frame.scrbl index a1690a19..a769e0fc 100644 --- a/collects/scribblings/framework/frame.scrbl +++ b/collects/scribblings/framework/frame.scrbl @@ -926,9 +926,11 @@ framework)) @(require (for-label scheme/gui)) @(require frame. } - @defmethod*[(((unhide-search) void))]{ - When the searching sub window is hidden, makes it visible. - + @defmethod*[(((unhide-search [move-focus? boolean? #f]) void))]{ + When the searching sub window is hidden, makes it visible. If + @scheme[move-focus?] is @scheme[#f], the focus is not moved, + but if it is any other value, the focus is moved to the find + window. } @defmethod[(get-case-sensitive-search?) boolean?]{ Returns @scheme[#t] if the search is currently case-sensitive. @@ -953,7 +955,7 @@ framework)) @(require (for-label scheme/gui)) @(require @defmethod*[#:mode override (((edit-menu:find-callback (item (is-a?/c menu-item%)) (evt (is-a?/c control-event%))) void?))]{ - Calls + Calls @method[frame:searchable unhide-search] and then @method[frame:searchable<%> search]. } @defmethod*[#:mode override (((edit-menu:create-find?) boolean?))]{ @@ -961,7 +963,7 @@ framework)) @(require (for-label scheme/gui)) @(require } @defmethod*[#:mode override (((edit-menu:find-backwards-callback (item (is-a?/c menu-item%)) (evt (is-a?/c control-event%))) void?))]{ - Calls + Calls @method[frame:searchable unhide-search] and then @method[frame:searchable<%> search]. } @defmethod*[#:mode override (((edit-menu:create-find-backwards?) boolean?))]{ @@ -969,7 +971,8 @@ framework)) @(require (for-label scheme/gui)) @(require } @defmethod*[#:mode override (((edit-menu:replace-and-find-callback) boolean?))]{ - Calls @method[frame:searchable<%> replace&search]. + Calls @method[frame:searchable unhide-search] and then + calls @method[frame:searchable<%> replace&search]. } @defmethod*[#:mode override (((edit-menu:replace-and-find-on-demand (item menu-item%)) void))]{ @@ -984,7 +987,8 @@ framework)) @(require (for-label scheme/gui)) @(require } @defmethod*[#:mode override (((edit-menu:replace-and-find-backwards-callback) boolean?))]{ - Calls @method[frame:searchable<%> replace&search]. + Calls @method[frame:searchable unhide-search] and then + calls @method[frame:searchable<%> replace&search]. } @defmethod*[#:mode override (((edit-menu:replace-and-find-backwards-on-demand (item menu-item%)) void))]{