From bada736a3ffb9e71d15f30ea2157d252cdd743c6 Mon Sep 17 00:00:00 2001 From: kusumotonorio <47816570+kusumotonorio@users.noreply.github.com> Date: Sat, 10 Aug 2019 22:02:17 +0900 Subject: [PATCH] Input Completion Improvements --- basis/ui/backend/cocoa/views/views.factor | 28 ++++++++++++++--------- basis/ui/gadgets/editors/editors.factor | 2 +- basis/ui/gadgets/gadgets.factor | 4 ++++ basis/ui/gestures/gestures.factor | 4 ---- 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/basis/ui/backend/cocoa/views/views.factor b/basis/ui/backend/cocoa/views/views.factor index 5ac61918eb..250e00f775 100644 --- a/basis/ui/backend/cocoa/views/views.factor +++ b/basis/ui/backend/cocoa/views/views.factor @@ -15,8 +15,6 @@ ui.backend.cocoa.input-methods.editors io.encodings.utf16n io.encodings.string classes.struct ; IN: ui.backend.cocoa.views -SLOT: window - : send-mouse-moved ( view event -- ) [ mouse-location ] [ drop window ] 2bi [ move-hand fire-motion yield ] [ drop ] if* ; @@ -364,10 +362,16 @@ PRIVATE> METHOD: char validateUserInterfaceItem: id event [ - self window [ - event -> action utf8 alien>string validate-action - [ >c-bool ] [ drop self event SUPER-> validateUserInterfaceItem: ] if - ] [ 0 ] if* + self window :> window + window [ + window world-focus :> gadget + gadget [ + gadget preedit? not [ + window event -> action utf8 alien>string validate-action + [ >c-bool ] [ drop self event SUPER-> validateUserInterfaceItem: ] if + ] [ 0 ] if + ] [ 0 ] if + ] [ 0 ] if ] ; METHOD: void undo: id event [ self event undo-action send-action$ ] ; @@ -481,9 +485,11 @@ PRIVATE> ] unless gadget preedit? [ gadget [ remove-preedit-text ] [ remove-preedit-info ] bi - ] when - str gadget user-input* drop - f gadget preedit-selection-mode?<< + str gadget user-input* drop + f gadget preedit-selection-mode?<< + ] [ + str window user-input + ] if ] [ str window user-input ] if @@ -625,6 +631,8 @@ PRIVATE> ] ; + METHOD: void doCommandBySelector: SEL selector [ ] ; + ! Initialization METHOD: void updateFactorGadgetSize: id notification [ @@ -634,8 +642,6 @@ PRIVATE> ] when ] ; - METHOD: void doCommandBySelector: SEL selector [ ] ; - METHOD: id initWithFrame: NSRect frame pixelFormat: id pixelFormat [ self frame pixelFormat SUPER-> initWithFrame:pixelFormat: diff --git a/basis/ui/gadgets/editors/editors.factor b/basis/ui/gadgets/editors/editors.factor index 143c9d6f2d..772e789193 100644 --- a/basis/ui/gadgets/editors/editors.factor +++ b/basis/ui/gadgets/editors/editors.factor @@ -22,7 +22,7 @@ TUPLE: editor < line-gadget preedit-underlines ; M: editor preedit? preedit-start>> [ t ] [ f ] if ; - + ( -- loc ) { 0 0 } ; diff --git a/basis/ui/gadgets/gadgets.factor b/basis/ui/gadgets/gadgets.factor index d05c103115..5e1c2c0900 100644 --- a/basis/ui/gadgets/gadgets.factor +++ b/basis/ui/gadgets/gadgets.factor @@ -401,6 +401,10 @@ M: f request-focus-on 2drop ; : focus-path ( gadget -- seq ) [ focus>> ] follow ; +GENERIC: preedit? ( gadget -- ? ) + +M: gadget preedit? drop f ; + USE: vocabs.loader { "ui.gadgets" "prettyprint" } "ui.gadgets.prettyprint" require-when diff --git a/basis/ui/gestures/gestures.factor b/basis/ui/gestures/gestures.factor index 56b448858c..64f0fb2ab2 100644 --- a/basis/ui/gestures/gestures.factor +++ b/basis/ui/gestures/gestures.factor @@ -63,10 +63,6 @@ M: propagate-key-gesture-tuple send-queued-gesture [ gesture>> ] [ world>> world-focus ] bi [ handle-gesture ] with each-parent drop ; -GENERIC: preedit? ( gadget -- ? ) - -M: gadget preedit? drop f ; - :: propagate-key-gesture ( gesture world -- ) world world-focus preedit? [ gesture world \ propagate-key-gesture-tuple queue-gesture -- 2.34.1