@@ -1687,11 +1687,23 @@ def open(self, mode, record, callback=None):
16871687 el .innerText = x
16881688 self .maindiv .appendChild (el )
16891689
1690+ # Keep track of composing state (e.g. entering JCK characters) to avoid prematurely submitting on enter (#594)
1691+ self ._is_composing = False
1692+ self ._ds_input .addEventListener (
1693+ "compositionstart" , lambda : self ._set_compose_state (True )
1694+ )
1695+ self ._ds_input .addEventListener (
1696+ "compositionend" , lambda : self ._set_compose_state (False )
1697+ )
1698+
16901699 # Almost done. Focus on ds if this looks like desktop; it's anoying on mobile
16911700 super ().open (callback )
16921701 if utils .looks_like_desktop ():
16931702 self ._ds_input .focus ()
16941703
1704+ def _set_compose_state (self , value ):
1705+ self ._is_composing = value
1706+
16951707 def _autocomp_finished (self ):
16961708 self ._show_tags_from_ds ()
16971709 self ._mark_as_edited ()
@@ -1854,6 +1866,8 @@ def _on_key(self, e):
18541866 if self ._autocompleter .on_key (e ):
18551867 e .stopPropagation ()
18561868 return
1869+ elif self ._is_composing :
1870+ pass
18571871 elif key == "enter" or key == "return" :
18581872 self .submit_soon ()
18591873 else :
@@ -2406,10 +2420,22 @@ def open(self, tags, callback=None):
24062420
24072421 self ._records = []
24082422
2423+ # Keep track of composing state (e.g. entering JCK characters)
2424+ self ._is_composing = False
2425+ self ._tagname2 .addEventListener (
2426+ "compositionstart" , lambda : self ._set_compose_state (True )
2427+ )
2428+ self ._tagname2 .addEventListener (
2429+ "compositionend" , lambda : self ._set_compose_state (False )
2430+ )
2431+
24092432 super ().open (callback )
24102433 if utils .looks_like_desktop ():
24112434 self ._tagname2 .focus ()
24122435
2436+ def _set_compose_state (self , value ):
2437+ self ._is_composing = value
2438+
24132439 def close (self ):
24142440 self ._records = []
24152441 super ().close ()
@@ -2428,6 +2454,8 @@ def _on_name2_done(self):
24282454
24292455 def _on_key2 (self , e ):
24302456 key = e .key .lower ()
2457+ if self ._is_composing :
2458+ pass
24312459 if key == "enter" or key == "return" :
24322460 e .stopPropagation ()
24332461 e .preventDefault ()
@@ -2578,6 +2606,18 @@ def open(self):
25782606 if utils .looks_like_desktop ():
25792607 self ._search_input .focus ()
25802608
2609+ # Keep track of composing state (e.g. entering JCK characters)
2610+ self ._is_composing = False
2611+ self ._search_input .addEventListener (
2612+ "compositionstart" , lambda : self ._set_compose_state (True )
2613+ )
2614+ self ._search_input .addEventListener (
2615+ "compositionend" , lambda : self ._set_compose_state (False )
2616+ )
2617+
2618+ def _set_compose_state (self , value ):
2619+ self ._is_composing = value
2620+
25812621 def close (self ):
25822622 self ._autocompleter .close ()
25832623 self ._records = []
@@ -2654,6 +2694,8 @@ def _on_key(self, e):
26542694 if self ._autocompleter .on_key (e ):
26552695 e .stopPropagation ()
26562696 return
2697+ elif self ._is_composing :
2698+ pass
26572699 elif key == "enter" or key == "return" :
26582700 e .stopPropagation ()
26592701 e .preventDefault ()
0 commit comments