]> gitweb.factorcode.org Git - factor.git/commitdiff
Input Completion Improvements
authorkusumotonorio <47816570+kusumotonorio@users.noreply.github.com>
Sat, 10 Aug 2019 13:02:17 +0000 (22:02 +0900)
committerkusumotonorio <47816570+kusumotonorio@users.noreply.github.com>
Sat, 10 Aug 2019 13:02:17 +0000 (22:02 +0900)
basis/ui/backend/cocoa/views/views.factor
basis/ui/gadgets/editors/editors.factor
basis/ui/gadgets/gadgets.factor
basis/ui/gestures/gestures.factor

index 5ac61918eb1b4b40684554cd6e6d6628338575a0..250e00f775a031e9e8476a580cbc910cc3a07a22 100644 (file)
@@ -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>
             <CGRect>
         ] ;
 
+    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:
index 143c9d6f2de8214b6c0969e1ca4d0959482b9df6..772e7891937c699dc1873bebcc051ceb3ab1f386 100644 (file)
@@ -22,7 +22,7 @@ TUPLE: editor < line-gadget
     preedit-underlines ;
 
 M: editor preedit? preedit-start>> [ t ] [ f ] if ;
-
 <PRIVATE
 
 : <loc> ( -- loc ) { 0 0 } <model> ;
index d05c1031153146db16a6ccead05eb27796831d97..5e1c2c0900f69d0306fb2e266169ebfb5fd2df21 100644 (file)
@@ -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
index 56b448858c485ffccb95d42c4d1b74e56b6954d1..64f0fb2ab2583ceac93e87efbfbb26d3483668d5 100644 (file)
@@ -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