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

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

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

2015年7月26日

Bug-org 1187367 [e10s][TSF] TSFTextStore shouldn't destroy native caret until notifying TSF of layout change
初回投稿日時: 2015年07月26日14時53分59秒
最終更新日時: 2015年07月26日15時03分11秒
カテゴリ: e10s IME Mozilla Core Mozilla42 TSF Windows バグ修正
SNS: (list)

TSF-awareなアプリで動作しているATOKは、何故かネイティブキャレットの位置を参考にサジェストウインドウ位置を決めています。これに対応するため、ITextStoreACP::GetTextExt()が呼び出された時に、その位置にネイティブキャレットを作成し、ドキュメントのロックが解除された時にキャレットを破棄していました。

しかし、e10sモードではこの破棄タイミングが早すぎたために、ATOKのサジェストウインドウが時折、変な位置に一瞬だけ表示されるという現象が起きていました。そこで、レイアウトの変更が発生するまで、キャレットを破棄しないように修正しました。

Windowsのキャレットはプロセスだったか、スレッドだったか全体での共有財産なので、ハックのために長時間作成しておくのは危険なのですが、今のところは仕方ありません。ちなみにATOK以外がアクティブな場合、このハックは動作しません。

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

bug-org 1187367を含むエントリ