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

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

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

2015年8月9日

Bug-org 1050644 [TSF][e10s] Candidate window of TIPs don't work correctly
初回投稿日時: 2015年08月09日11時22分11秒
カテゴリ: e10s IME Mozilla Core Mozilla42 TSF Windows バグ修正
SNS: (list)

e10sモードで、TSFモードを有効にしていると、様々なTIPで候補ウインドウ位置やサジェストウインドウ位置がおかしくなるというバグでしたが、これまでの修正により、確認されている問題はWindows 8以降のMicrosoft謹製の中国語(簡体字・繁体字共)のTIPで全くウインドウが表示されないというバグだけになりましたのでその修正をこのバグで行いました。

まず、問題が発生しているTIPのUIや挙動からすると、これらのTIPは全て同じソースコードをベースに作られているように感じました。そのため、一つの修正で全てに対応できると思いましたが、結果、その通りだったようです。

これに対応するには、まず、問題のあるTIPをリストアップし、それぞれのTIP名を調べなくてはいけません。これが毎度毎度、ロケールごとに別の名前になっている可能性があるので面倒です。結果は以下のようになりました。

問題のあったMS製中国語TIPとその名前
中国語ロケール以外での名前 簡体字版での名前 繁体字版での名前
Microsoft Pinyin 微软拼音 微軟拼音
Microsoft Wubi 微软五笔 微軟五筆
Microsoft ChangJie 微软仓颉 微軟倉頡
Microsoft Quick 微软速成 微軟速成

これらがアクティブな場合、ITextStoreACP::GetTextExt()acpEndを、絶対に変更が行われてない未確定文字列の最初の文字のオフセットに読み替え、acpStartをそれ以下のオフセットとすることで対処しました。

このハックは、PinyinとWubiはintl.tsf.hack.ms_simplified_chinese.do_not_return_no_layout_errorを、ChangJieとQuickはintl.tsf.hack.ms_traditional_chinese.do_not_return_no_layout_errorfalseにすることで無効化できるようにしています。

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

bug-org 1050644を含むエントリ