From d1c84783f1a8a439edee917b6ff6e30abf53cec5 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 15 Jan 2009 01:33:35 -0600 Subject: [PATCH] Word operations now DTRT if the completion popup is visible --- basis/ui/gadgets/editors/editors.factor | 2 +- basis/ui/tools/listener/listener.factor | 17 ++++++++++++----- basis/ui/tools/operations/operations.factor | 4 +++- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/basis/ui/gadgets/editors/editors.factor b/basis/ui/gadgets/editors/editors.factor index 57acb6d6d9..3fdddd170f 100755 --- a/basis/ui/gadgets/editors/editors.factor +++ b/basis/ui/gadgets/editors/editors.factor @@ -462,7 +462,7 @@ editor "caret-motion" f { : select-word ( editor -- ) one-word-elt select-elt ; -: selected-word ( editor -- string ) +: selected-token ( editor -- string ) dup gadget-selection? [ dup select-word ] unless gadget-selection ; diff --git a/basis/ui/tools/listener/listener.factor b/basis/ui/tools/listener/listener.factor index fe87dad879..a06599be07 100644 --- a/basis/ui/tools/listener/listener.factor +++ b/basis/ui/tools/listener/listener.factor @@ -81,10 +81,10 @@ M: interactor ungraft* [ dup help>> remove-connection ] [ call-next-method ] bi ; M: interactor model-changed - 2dup [ help>> eq? ] [ nip completion-popup>> not ] 2bi and - [ [ value>> ] dip show-summary ] - [ call-next-method ] - if ; + 2dup help>> eq? [ + dup completion-popup>> + [ 2drop ] [ [ value>> ] dip show-summary ] if + ] [ call-next-method ] if ; GENERIC: (print-input) ( object -- ) @@ -532,7 +532,7 @@ CONSTANT: completion-popup-offset { -4 0 } : word-completion-popup ( interactor -- ) dup vocab-completion? - [ vocabs-matching ] [ words-matching ] ? + [ vocabs-matching ] [ words-matching ] ? '[ [ { } ] _ if-empty ] one-word-elt show-completion-popup ; : history-matching ( interactor -- alist ) @@ -555,6 +555,13 @@ M: interactor handle-gesture [ call-next-method ] [ 2drop f ] if ] [ call-next-method ] if ; +: selected-word ( editor -- word ) + dup completion-popup>> [ + [ table>> selected-row drop ] [ hide-completion-popup ] bi + ] [ + selected-token dup search [ ] [ no-word ] ?if + ] ?if ; + interactor "completion" f { { T{ key-down f f "TAB" } word-completion-popup } { T{ key-down f { C+ } "p" } history-completion-popup } diff --git a/basis/ui/tools/operations/operations.factor b/basis/ui/tools/operations/operations.factor index 43de1a2f61..967d81ec3b 100644 --- a/basis/ui/tools/operations/operations.factor +++ b/basis/ui/tools/operations/operations.factor @@ -174,13 +174,15 @@ M: word com-stack-effect def>> com-stack-effect ; { +listener+ t } } define-operation +USE: ui.gadgets.tables + ! Operations -> commands source-editor "word" "These commands operate on the Factor word named by the token at the caret position." \ selected-word [ selected-word ] -[ dup search [ ] [ no-word ] ?if ] +[ ] define-operation-map interactor