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:
Tweet (list)
e10sモードで、TSFモードを有効にしていると、様々なTIPで候補ウインドウ位置やサジェストウインドウ位置がおかしくなるというバグでしたが、これまでの修正により、確認されている問題はWindows 8以降のMicrosoft謹製の中国語(簡体字・繁体字共)のTIPで全くウインドウが表示されないというバグだけになりましたのでその修正をこのバグで行いました。
まず、問題が発生しているTIPのUIや挙動からすると、これらのTIPは全て同じソースコードをベースに作られているように感じました。そのため、一つの修正で全てに対応できると思いましたが、結果、その通りだったようです。
これに対応するには、まず、問題のあるTIPをリストアップし、それぞれの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_error
をfalse
にすることで無効化できるようにしています。