この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2012年10月)

2012年10月20日

Bug-org 705057 Implement composition event manager
初回投稿日時: 2012年10月20日12時27分52秒
カテゴリ: Events Mozilla Core Mozilla19 バグ修正
SNS: (list)

これまで、Geckoでは、ネイティブのIMEのイベントから、DOMイベントを生成して、その時点でフォーカスのある要素に対して、そのイベントを発行していました。しかし、これでは、意図せず、強制確定前にフォーカスが移動してしまったケースでは、おかしなことになってしまいます。また、現在のXPレベルのコードでは、エディタ以外に未確定文字列を編集中であるかどうかを管理しているクラスがありませんでしたので、色々と不便がありました。

そこで、compositionstartで、インスタンスを作成し、compositionendまでの一連のIME系のイベントを全て、compositionstartを発行したイベントで発行し、compositionend後に破棄されるクラスを作ると色々と便利だよね、というアイデアになったわけです。

TextCompositionというクラスのインスタンスが、ひとつの、未確定文字列編集を表していて、これのプロセス全体でのリストが、nsIMEStateManagerで管理されている、という形をとっています。

この修正によって改善したのは、

  • ワンセットになる、IME関連イベントが全て、同じ要素で確実に発生するようになった
  • 生成されたTextCompositionが自動テストで生成されたものかどうか判別できるので、強制確定を含めた自動テストが書けるようになった

の2点のみです。

関連するかもしれないエントリ

bug-org 705057を含むエントリ