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

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

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

2014年10月30日

Bug-org 960871 Get rid of WidgetTextEvent and WidgetCompositionEvent should take over the job
初回投稿日時: 2014年10月30日17時15分38秒
カテゴリ: Events Mozilla Core Mozilla35 バグ修正
SNS: (list)

compositionupdateは、未確定文字列が変化する前に発火するイベントということに、一応、なっていますので、これは、エディタの未確定文字列を書き換えるためには現在使っていません(というか、内部処理では使っていません)。内部処理では、WidgetTextEventを、NS_TEXT_TEXTイベントとして発火し、textという独自DOMイベントとして発火したものを利用しています。

しかし、この、独自のイベント型であるWidgetTextEventが存在し続けると、各種引数は、共通のスーパークラスである、WidgetGUIEventを使わなくてはいけなかったり、WidgetEvent::mClassメンバの値を何度もチェックする必要があり、コードがスッキリとしない原因になっていました。

このバグの修正により、NS_TEXT_TEXTイベントは、NS_COMPOSITION_CHANGEイベントに変更され、WidgetTextEventクラスは単純に廃止、代わりに、WidgetCompositionEventに、WidgetTextEventのみが持っていた未確定文字列の文節情報を持たせています。独自DOMイベントもUIEventから、CompositionEventに変化していますので、若干の非互換が発生していますが、これが問題になることは実際のケースでは存在しないと思います(CompositionEvent.dataで未確定文字列にはアクセス可能に変更になっています)。

これにより、未確定文字列を取り扱うメソッドで、引数にWidgetGUIEventをとっていたメソッドは、(見つけられた限り)全て、WidgetCompositionEventに修正し、メソッドの利用方法をより明確にしています。

自動テストを記述する際には、EventUtils.synthesizeText()が、EventUtils.synthesizeCompositionChange()に名前が変更されているので注意してください。

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

bug-org 960871を含むエントリ