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:
Tweet (list)
今のところ、ITextStoreACP::GetACPFromPoint()
を活用しているTIPを見つけていないような状態でしたので、今まで実装していませんでしたが、これから、TSFをFirefoxで標準機能とした場合には、新しいTIPがこの機能を利用した時に、Firefoxが実装していなければ利用を断念するかもしれません。そんな状況はよくないので、今回、ある程度実装を行いました。
GXFPF_ROUND_NEAREST
とGXFPF_NEAREST
が指定されていて、指定位置に文字が無い場合、その場所をクリックしたときにキャレットが移動する場所を返します。
GXFPF_NEAREST
のみが指定されていて、指定位置に文字が無い場合、簡単にその位置に近い文字を探すAPIが残念ながらGecko内には存在していないため、このケースの実装のみ、正確性を欠いたものになっています。このケースでは、基本的に、その位置をクリックした場合のキャレット位置を返します。ただし、最後の文字の右側に来る場合は、ひとつ引いた値になります(文字の最大値は、キャレット位置の最大値 - 1なため)。これは、大きく異なる座標を返すことはありませんが、その座標から近い文字の右半分にヒットしている場合、ひとつ右側の文字のインデックスを返すことになります。