From f6714c551cf0c02c319921ff36cddea87676be9f Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Sun, 27 Jul 2008 13:57:33 +0000 Subject: [PATCH] changed menu keybinding for find so that it toggles the keyboard focus back and forth with the searching window svn: r10934 --- collects/drscheme/private/unit.ss | 18 +---- collects/framework/private/frame.ss | 15 +++- .../framework/private/standard-menus-items.ss | 12 +++ collects/framework/private/standard-menus.ss | 76 +++++++++++++++---- collects/scribblings/framework/frame.scrbl | 10 ++- .../framework/standard-menus.scrbl | 12 +++ .../english-string-constants.ss | 8 +- 7 files changed, 113 insertions(+), 38 deletions(-) diff --git a/collects/drscheme/private/unit.ss b/collects/drscheme/private/unit.ss index 41d37345b1..f431d1c870 100644 --- a/collects/drscheme/private/unit.ss +++ b/collects/drscheme/private/unit.ss @@ -2637,23 +2637,7 @@ module browser threading seems wrong. (update-shown)) #\e (string-constant interactions-menu-item-help-string))) - (new menu:can-restore-menu-item% - [shortcut #\f] - [shortcut-prefix (cons (case (system-type) - [(macosx) 'option] - [else 'alt]) - (get-default-shortcut-prefix))] - [parent (get-show-menu)] - [label (string-constant show-find-bar)] - [callback - (λ (menu evt) - (cond - [(search-hidden?) - (send menu set-label (string-constant hide-find-bar)) - (unhide-search #t)] - [else - (send menu set-label (string-constant hide-find-bar)) - (hide-search)]))]) + (new menu:can-restore-menu-item% (shortcut #\u) (label diff --git a/collects/framework/private/frame.ss b/collects/framework/private/frame.ss index b9cd261e63..8a23ad2f07 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 7f29fe6869..68a60f97cb 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/framework/private/standard-menus.ss b/collects/framework/private/standard-menus.ss index 2090fabc96..9d597e37c1 100644 --- a/collects/framework/private/standard-menus.ss +++ b/collects/framework/private/standard-menus.ss @@ -146,6 +146,12 @@ edit-menu:replace-all-help-string edit-menu:replace-all-on-demand edit-menu:create-replace-all? + edit-menu:toggle-find-focus-callback + edit-menu:get-toggle-find-focus-item + edit-menu:toggle-find-focus-string + edit-menu:toggle-find-focus-help-string + edit-menu:toggle-find-focus-on-demand + edit-menu:create-toggle-find-focus? edit-menu:find-case-sensitive-callback edit-menu:get-find-case-sensitive-item edit-menu:find-case-sensitive-string @@ -179,7 +185,8 @@ 'framework:menu-bindings (λ (p v) (let loop ((menu (get-menu-bar))) - (when (is-a? menu menu:can-restore<%>) (if v (send menu restore-keybinding) (send menu set-shortcut #f))) + (when (is-a? menu menu:can-restore<%>) + (if v (send menu restore-keybinding) (send menu set-shortcut #f))) (when (is-a? menu menu:can-restore-underscore<%>) (if v (send menu restore-underscores) (send menu erase-underscores))) (when (is-a? menu menu-item-container<%>) (for-each loop (send menu get-items))))))) @@ -249,7 +256,9 @@ (define/public (file-menu:get-quit-item) file-menu:quit-item) (define/public (file-menu:quit-string) - (if (eq? (system-type) 'windows) (string-constant quit-menu-item-windows) (string-constant quit-menu-item-others))) + (if (eq? (system-type) 'windows) + (string-constant quit-menu-item-windows) + (string-constant quit-menu-item-others))) (define/public (file-menu:quit-help-string) (string-constant quit-info)) (define/public file-menu:quit-on-demand (λ (menu-item) (void))) (define/public (file-menu:create-quit?) (not (current-eventspace-has-standard-menus?))) @@ -402,8 +411,12 @@ (define/public (edit-menu:create-replace-and-find?) #f) (define/public edit-menu:replace-and-find-backwards-callback (λ (item control) (void))) (define/public (edit-menu:get-replace-and-find-backwards-item) edit-menu:replace-and-find-backwards-item) - (define/public (edit-menu:replace-and-find-backwards-string) (string-constant replace-and-find-backwards-menu-item)) - (define/public (edit-menu:replace-and-find-backwards-help-string) (string-constant replace-and-find-backwards-info)) + (define/public + (edit-menu:replace-and-find-backwards-string) + (string-constant replace-and-find-backwards-menu-item)) + (define/public + (edit-menu:replace-and-find-backwards-help-string) + (string-constant replace-and-find-backwards-info)) (define/public edit-menu:replace-and-find-backwards-on-demand (λ (item) (send item enable (let ((target (get-edit-target-object))) (and target (is-a? target editor<%>)))))) @@ -416,6 +429,12 @@ edit-menu:replace-all-on-demand (λ (item) (send item enable (let ((target (get-edit-target-object))) (and target (is-a? target editor<%>)))))) (define/public (edit-menu:create-replace-all?) #f) + (define/public edit-menu:toggle-find-focus-callback (λ (item control) (void))) + (define/public (edit-menu:get-toggle-find-focus-item) edit-menu:toggle-find-focus-item) + (define/public (edit-menu:toggle-find-focus-string) (string-constant toggle-find-focus)) + (define/public (edit-menu:toggle-find-focus-help-string) (string-constant toggle-find-focus-info)) + (define/public edit-menu:toggle-find-focus-on-demand (λ (item) (void))) + (define/public (edit-menu:create-toggle-find-focus?) #f) (define/public edit-menu:find-case-sensitive-callback (λ (item control) (void))) (define/public (edit-menu:get-find-case-sensitive-item) edit-menu:find-case-sensitive-item) (define/public (edit-menu:find-case-sensitive-string) (string-constant find-case-sensitive-menu-item)) @@ -453,7 +472,8 @@ (label (file-menu:new-string)) (parent file-menu) (callback - (let ((file-menu:new-callback (λ (item evt) (file-menu:new-callback item evt)))) file-menu:new-callback)) + (let ((file-menu:new-callback (λ (item evt) (file-menu:new-callback item evt)))) + file-menu:new-callback)) (shortcut #\n) (shortcut-prefix (get-default-shortcut-prefix)) (help-string (file-menu:new-help-string)) @@ -466,7 +486,8 @@ (label (file-menu:open-string)) (parent file-menu) (callback - (let ((file-menu:open-callback (λ (item evt) (file-menu:open-callback item evt)))) file-menu:open-callback)) + (let ((file-menu:open-callback (λ (item evt) (file-menu:open-callback item evt)))) + file-menu:open-callback)) (shortcut #\o) (shortcut-prefix (get-default-shortcut-prefix)) (help-string (file-menu:open-help-string)) @@ -501,7 +522,8 @@ (label (file-menu:save-string)) (parent file-menu) (callback - (let ((file-menu:save-callback (λ (item evt) (file-menu:save-callback item evt)))) file-menu:save-callback)) + (let ((file-menu:save-callback (λ (item evt) (file-menu:save-callback item evt)))) + file-menu:save-callback)) (shortcut #\s) (shortcut-prefix (get-default-shortcut-prefix)) (help-string (file-menu:save-help-string)) @@ -555,7 +577,8 @@ (label (file-menu:quit-string)) (parent file-menu) (callback - (let ((file-menu:quit-callback (λ (item evt) (file-menu:quit-callback item evt)))) file-menu:quit-callback)) + (let ((file-menu:quit-callback (λ (item evt) (file-menu:quit-callback item evt)))) + file-menu:quit-callback)) (shortcut #\q) (shortcut-prefix (get-default-shortcut-prefix)) (help-string (file-menu:quit-help-string)) @@ -568,7 +591,8 @@ (label (edit-menu:undo-string)) (parent edit-menu) (callback - (let ((edit-menu:undo-callback (λ (item evt) (edit-menu:undo-callback item evt)))) edit-menu:undo-callback)) + (let ((edit-menu:undo-callback (λ (item evt) (edit-menu:undo-callback item evt)))) + edit-menu:undo-callback)) (shortcut #\z) (shortcut-prefix (get-default-shortcut-prefix)) (help-string (edit-menu:undo-help-string)) @@ -580,10 +604,13 @@ (label (edit-menu:redo-string)) (parent edit-menu) (callback - (let ((edit-menu:redo-callback (λ (item evt) (edit-menu:redo-callback item evt)))) edit-menu:redo-callback)) + (let ((edit-menu:redo-callback (λ (item evt) (edit-menu:redo-callback item evt)))) + edit-menu:redo-callback)) (shortcut (if (eq? (system-type) 'windows) #\y #\z)) (shortcut-prefix - (if (eq? (system-type) 'windows) (get-default-shortcut-prefix) (cons 'shift (get-default-shortcut-prefix)))) + (if (eq? (system-type) 'windows) + (get-default-shortcut-prefix) + (cons 'shift (get-default-shortcut-prefix)))) (help-string (edit-menu:redo-help-string)) (demand-callback (λ (menu-item) (edit-menu:redo-on-demand menu-item)))))) (edit-menu:between-redo-and-cut (get-edit-menu)) @@ -594,7 +621,8 @@ (label (edit-menu:cut-string)) (parent edit-menu) (callback - (let ((edit-menu:cut-callback (λ (item evt) (edit-menu:cut-callback item evt)))) edit-menu:cut-callback)) + (let ((edit-menu:cut-callback (λ (item evt) (edit-menu:cut-callback item evt)))) + edit-menu:cut-callback)) (shortcut #\x) (shortcut-prefix (get-default-shortcut-prefix)) (help-string (edit-menu:cut-help-string)) @@ -607,7 +635,8 @@ (label (edit-menu:copy-string)) (parent edit-menu) (callback - (let ((edit-menu:copy-callback (λ (item evt) (edit-menu:copy-callback item evt)))) edit-menu:copy-callback)) + (let ((edit-menu:copy-callback (λ (item evt) (edit-menu:copy-callback item evt)))) + edit-menu:copy-callback)) (shortcut #\c) (shortcut-prefix (get-default-shortcut-prefix)) (help-string (edit-menu:copy-help-string)) @@ -662,7 +691,8 @@ (label (edit-menu:find-string)) (parent edit-menu) (callback - (let ((edit-menu:find-callback (λ (item evt) (edit-menu:find-callback item evt)))) edit-menu:find-callback)) + (let ((edit-menu:find-callback (λ (item evt) (edit-menu:find-callback item evt)))) + edit-menu:find-callback)) (shortcut #\f) (shortcut-prefix (get-default-shortcut-prefix)) (help-string (edit-menu:find-help-string)) @@ -687,7 +717,8 @@ (label (edit-menu:replace-and-find-string)) (parent edit-menu) (callback - (let ((edit-menu:replace-and-find-callback (λ (item evt) (edit-menu:replace-and-find-callback item evt)))) + (let ((edit-menu:replace-and-find-callback + (λ (item evt) (edit-menu:replace-and-find-callback item evt)))) edit-menu:replace-and-find-callback)) (shortcut #\g) (shortcut-prefix (get-default-shortcut-prefix)) @@ -720,6 +751,21 @@ (shortcut-prefix (get-default-shortcut-prefix)) (help-string (edit-menu:replace-all-help-string)) (demand-callback (λ (menu-item) (edit-menu:replace-all-on-demand menu-item)))))) + (define edit-menu:toggle-find-focus-item + (and (edit-menu:create-toggle-find-focus?) + (new + (get-menu-item%) + (label (edit-menu:toggle-find-focus-string)) + (parent edit-menu) + (callback + (let ((edit-menu:toggle-find-focus-callback + (λ (item evt) (edit-menu:toggle-find-focus-callback item evt)))) + edit-menu:toggle-find-focus-callback)) + (shortcut #\f) + (shortcut-prefix + (cons (case (system-type) ((macosx) 'option) (else 'alt)) (get-default-shortcut-prefix))) + (help-string (edit-menu:toggle-find-focus-help-string)) + (demand-callback (λ (menu-item) (edit-menu:toggle-find-focus-on-demand menu-item)))))) (define edit-menu:find-case-sensitive-item (and (edit-menu:create-find-case-sensitive?) (new diff --git a/collects/scribblings/framework/frame.scrbl b/collects/scribblings/framework/frame.scrbl index a769e0fcf5..f5b39912de 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]. } diff --git a/collects/scribblings/framework/standard-menus.scrbl b/collects/scribblings/framework/standard-menus.scrbl index 970799b65b..4c36395564 100644 --- a/collects/scribblings/framework/standard-menus.scrbl +++ b/collects/scribblings/framework/standard-menus.scrbl @@ -293,6 +293,18 @@ @(defmethod (edit-menu:replace-all-help-string) string? "The result of this method is used as the help string" "\n" "when the " (scheme menu-item%) " object is created." "\n" "\n" "Defaults to " (scheme (string-constant replace-all-info)) ".") +@(defmethod (edit-menu:get-toggle-find-focus-item) (or/c false/c (is-a?/c menu-item%)) "This method returns the " (scheme menu-item%) " object corresponding" "\n" "to this menu item, if it has been created (as controlled by" "\n" (method frame:standard-menus<%> edit-menu:create-toggle-find-focus?) ").") + +@(defmethod (edit-menu:create-toggle-find-focus?) boolean? "The result of this method determines if the corresponding" "\n" "menu item is created. Override it to control the creation of the menu item." "\n" "\n" "Defaults to " (scheme #f) ".") + +@(defmethod (edit-menu:toggle-find-focus-callback (item (is-a?/c menu-item%)) (control (is-a?/c control-event%))) void? "Defaults to " (schemeblock (void)) " ") + +@(defmethod (edit-menu:toggle-find-focus-on-demand (item (is-a?/c menu-item%))) void? "The menu item's on-demand proc calls this method." "\n" "\n" "Defaults to " (schemeblock (void))) + +@(defmethod (edit-menu:toggle-find-focus-string) string? "The result of this method is used as the name of the " (scheme menu-item%) "." "\n" "\n" "Defaults to " (scheme (string-constant toggle-find-focus)) ".") + +@(defmethod (edit-menu:toggle-find-focus-help-string) string? "The result of this method is used as the help string" "\n" "when the " (scheme menu-item%) " object is created." "\n" "\n" "Defaults to " (scheme (string-constant toggle-find-focus-info)) ".") + @(defmethod (edit-menu:get-find-case-sensitive-item) (or/c false/c (is-a?/c menu-item%)) "This method returns the " (scheme menu-item%) " object corresponding" "\n" "to this menu item, if it has been created (as controlled by" "\n" (method frame:standard-menus<%> edit-menu:create-find-case-sensitive?) ").") @(defmethod (edit-menu:create-find-case-sensitive?) boolean? "The result of this method determines if the corresponding" "\n" "menu item is created. Override it to control the creation of the menu item." "\n" "\n" "Defaults to " (scheme #f) ".") diff --git a/collects/string-constants/english-string-constants.ss b/collects/string-constants/english-string-constants.ss index 842f994a33..b1b79e4dd7 100644 --- a/collects/string-constants/english-string-constants.ss +++ b/collects/string-constants/english-string-constants.ss @@ -513,6 +513,9 @@ please adhere to these guidelines: (backward "Backward") (hide "Hide") (find-case-sensitive "Case sensitive") ;; the check box in both the docked & undocked search + (toggle-find-focus "Toggle Search Focus") ;; menu item + (toggle-find-focus-info "Toggles the keyboard focus between the window being searched and the search bar") + ;;; multi-file-search (mfs-multi-file-search-menu-item "Search in Files...") @@ -711,10 +714,7 @@ please adhere to these guidelines: (show-module-browser "Show Module Browser") (hide-module-browser "Hide Module Browser") - (show-find-bar "Show Find Bar") - (hide-find-bar "Hide Find Bar") - - (help-menu-label "&Help") + (help-menu-label "&Help") (about-info "Credits and details for this application") (about-menu-item "About...")