Bug-org 1237216 [TSF] Unnecessary composition events are raised when typing Korean characters
初回投稿日時: 2016年01月30日22時29分37秒
カテゴリ: IME Mozilla Core Mozilla46 TSF Windows バグ修正
SNS:
Tweet (list)
ハングル用のMS-IMEは、TSFモードではCompositionEvent
がおかしな発火のされ方になるというバグです。具体的には二文字目を入力開始すると一文字目が確定されるのですが、その間に、compositionstart
とcompositionend
がワンセットで発火されます。
ハングル用のMS-IMEは日本語とも中国語とも全然違う動作を行うTIPで、二文字目の入力が行われた時に一文字目の未確定文字列処理を確定しないまま、二文字目の範囲を新たな未確定文字列の範囲として指示して来ます。この時に未確定文字列の先頭のオフセットが変更になってしまうので、DOMイベント的には、一度、compositionを終了し、新しいcompositionを開始するしかありません。
そのため、二文字目の入力が開始された時にTSFTextStore
は一文字目の編集を終了し、強制確定させてから、新たな未確定文字列の編集処理を開始するのですが、その直後にTIPから一文字目の確定処理が通知されます。この際に、キューに入れるcompositionend
が実際に文字列を変更していない場合、すでにキューに入れているcompositionstart
から削除してしまうことで修正に成功しました。
TSF-awareなアプリを書かれる方は、他言語のTIPとはあまりに動作が異なっている、ハングルのTIPでのテストは十分に行った方が良いです。