Bug-org 1077345 Make compositionend event dispatchers of widget simpler
初回投稿日時: 2014年11月25日23時35分39秒
カテゴリ: Mozilla Core Mozilla36 バグ修正
SNS:
Tweet (list)
IMEが未確定文字列を確定する際、widgetは、NS_COMPOSITION_CHANGE
イベントを文節情報無しで発火し、未確定文字列から文節情報を削除した後、NS_COMPOSITION_END
イベントを発火して、エディタがこれを受け取ると、IMEからの入力を一旦打ち切る、という形になっていました。しかし、これは冗長な上に、e10sに移行すると、NS_COMPOSITION_CHANGE
イベントとNS_COMPOSITION_END
イベントの間で、今までには走り得なかった、別の処理が割り込んでくる可能性がありました(実際に起こりうるかはしりませんが、Javascriptのタイマー等)。
今回の修正で、確定用に、NS_COMPOSITION_COMMIT_AS_IS
と、NS_COMPOSITION_COMMIT
イベントを新設しました。前者は発火時の未確定文字列をそのまま確定、後者はWidgetCompositionEvent::mData
で任意の確定文字列を指定できるようにしています。TextComposition
がこれらを受け取ると、必要に応じて、NS_COMPOSITION_UPDATE
を発火し、その後、NS_COMPOSITION_CHANGE
を文節情報無しで発火し、エディタ上から文節情報を取り除き、NS_COMPOSITION_END
でエディタのIME編集モードを終了させます。
これにより、確定時のプロセス間通信は半減しました。さらに、別プロセス上で確定される場合、そのプロセス内のTextComposition
が必要なイベントを自動的に発火するので、これまでと同じ様に、イベントが連続して発火されることになります。