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

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

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

2012年3月17日

Bug-org 729774 Don't include composition string in the result of retrieve_surrounding signal
初回投稿日時: 2012年03月17日11時46分05秒
カテゴリ: Mozilla Core Mozilla13 バグ修正
SNS: (list)

LinuxでもIMEはカーソル位置周辺のテキストを取得することができ、また、カーソル位置周辺のテキストを削除することもできます。これは再変換や、タイ語等の複雑な文字の入力に必要な機能なのですが、これらの動作時に未確定文字列が既に存在している場合、GTKのドキュメント通りに動いていないことを発見したので、それを修正しました。

retrieve_surroundingシグナルを受け取った場合、アプリは未確定文字列を含まない文字列を返さなくてはいけませんが、今回の修正では、未確定文字列を取り除くのはもちろん、未確定文字列入力時に削除された、選択されていた文字列も復元するようになりました。ただし、CompositionEvent等を利用して未確定文字列の発生時に選択位置を変更したりする奇妙なWebアプリとだと実際のエディタの内容と齟齬がでる可能性はありますが、そのような場合にはそもそも実用性が疑わしいので、今のところは問題無いレベルの実装になったと思います。

delete_surroundingシグナルを受け取った場合、アプリはretrieve_surroundingで返した文字列に対して処理を行わなくてはいけないので、あわせて修正しています。また、これの実装は指定された範囲を一旦選択し、削除コマンドをエディタに送る、というものですので、現状のnsEditorの実装からすると未確定文字列がある場合にはそもそもまともに動いていなかったと思われるので、一旦未確定文字列を取り消し、未確定文字列によって削除された文字列を復元してから、選択・削除を行い、また再び未確定文字列を復元する、という動作になりました。このため、CompositionEventが複数回発行されますが、この際に何らかの動作を行うWebアプリでは問題がある可能性がありますが、現在ではこれが限界です。

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

bug-org 729774を含むエントリ