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

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

もずはっく日記(2009年5月)

2009年5月16日

Bug 4461 [IMM32] IMEマウスイベント時、文字列の位置情報が狂っていることがある
初回投稿日時: 2009年05月16日02時50分26秒
最終更新日時: 2009年05月16日03時06分26秒
カテゴリ: Mozilla Core バグ修正
SNS: (list)

IMM32で、MS-IMEのマウスイベントを有効にするには未確定文字列の位置情報が必要なのですが、それを非常にいい加減に取得していたので全然まともに動かないよ、というバグです。

今までは特定の位置にある文字のオフセット等を取得する方法が無かったので、未確定文字列が一文字入力されるたびに、キャレット座標が変わるので、その位置情報から何番目の未確定文字の矩形を推測していました。もちろん、こんな方法なので、等幅フォントでなければ、変換することによって文字幅が変わってしまい、位置情報がまったくでたらめになっていました。また、未確定文字列がある状態でtextareaをスクロールしてしまうとやはり位置情報はでたらめになってしまいます。さらに、未確定文字列の位置情報を64文字までしか保存していなかった、という(あまり問題ないでしょうが)変な制約もありました。

今回、新たにwidgetのコードから特定のポイントにある文字のオフセットと、その矩形を簡単に取得できるようにしたので、情報が必要になった時に問い合わせることによって上記の問題を全て解決しています。

またこの修正により、TSFでの対応や、Macでの対応も簡単に可能になっています。

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

bug 4461を含むエントリ