Bug-org 1137539 [TSF] Workaround for TS_E_NOLAYOUT bug of <= Windows 8.1 may need to check different TIP name for different language Windows
初回投稿日時: 2015年04月17日10時39分55秒
最終更新日時: 2015年04月17日10時58分39秒
カテゴリ: Mozilla Core Mozilla40 TSF Windows バグ修正
SNS:
Tweet (list)
TSFには、ITextStoreACP::GetTextExt()
から、TS_E_NOLAYOUT
を返しても、TIPにはE_FAIL
が返されてしまうので、レイアウトの再計算の終了を待つことができないというバグがあります(このバグはWindows 10では修正されている模様)。
このバグに個別に対応するため、問題が判明しているTIPの名前ごとに、必要なハックを用いて、「それっぽい位置」を返して、問題が無いかのように見せていますが、Google日本語入力の存在で、Windowsの言語が変わると、TIPの名前も変わっている可能性があることが分かりました。そこで、これまでにハックを行ったTIPを全て、そのターゲットとしている言語バージョンのWindowsと、英語版のWindowsで名前を確認していきました。
幸い、Google日本語入力以外では、Windowsの言語に関係無く、同じ文字列が名前として利用されていましたので、このバグ修正では、それぞれを確認するためのコードをTSFStaticSink
のメソッドにしてしまうことで、定数まみれだったコードを綺麗にしています。