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

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

もずはっく日記(2015年4月)

2015年4月17日

Bug-org 492394 [TSF] Implement nsTextStore::GetACPFromPoint
初回投稿日時: 2015年04月17日13時11分12秒
最終更新日時: 2015年04月18日00時11分19秒
カテゴリ: Mozilla Core Mozilla40 TSF Windows バグ修正
SNS: (list)

今のところ、ITextStoreACP::GetACPFromPoint()を活用しているTIPを見つけていないような状態でしたので、今まで実装していませんでしたが、これから、TSFをFirefoxで標準機能とした場合には、新しいTIPがこの機能を利用した時に、Firefoxが実装していなければ利用を断念するかもしれません。そんな状況はよくないので、今回、ある程度実装を行いました。

GXFPF_ROUND_NEARESTGXFPF_NEARESTが指定されていて、指定位置に文字が無い場合、その場所をクリックしたときにキャレットが移動する場所を返します。

GXFPF_NEARESTのみが指定されていて、指定位置に文字が無い場合、簡単にその位置に近い文字を探すAPIが残念ながらGecko内には存在していないため、このケースの実装のみ、正確性を欠いたものになっています。このケースでは、基本的に、その位置をクリックした場合のキャレット位置を返します。ただし、最後の文字の右側に来る場合は、ひとつ引いた値になります(文字の最大値は、キャレット位置の最大値 - 1なため)。これは、大きく異なる座標を返すことはありませんが、その座標から近い文字の右半分にヒットしている場合、ひとつ右側の文字のインデックスを返すことになります。

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

bug-org 492394を含むエントリ