Bug-org 805767 nsIMEManager::CreateTextStateManager() should use nsIWidget::GetIMEUpdatePreference() rather than the result of OnIMEFocusChange()
初回投稿日時: 2012年11月14日14時08分25秒
カテゴリ: Mozilla Core Mozilla19 バグ修正
SNS:
Tweet (list)
nsIMEStateManager
と、nsTextStateManager
の再設計、最後のバグです。nsTextStateManager
がエディタ内での選択位置の変化や、文字列の変化を通知するのは非常にコスト高なので、各プラットフォームのwidgetが望んだ場合にのみ実行するようになっていました。ただ、その通知方法が、非常にハッキーで、nsIWidget::OnIMEFocusChange(true)
がNS_OK
を返すか否か、という、widget側の開発者からすると訳の分からないことになっていました。このバグはこれを修正しています。
e10sやモバイル用でのプロセス間通信用のPuppetWidget
がどのように振る舞うべきかを確認するために、nsIWidget::GetIMEUpdatePreference()
というAPIが既にあり、この返す値が、nsIWidget::OnIMEFocusChange(true)
の戻り値の代わりになることが分かっていました。
nsTextStateManager
はコンストラクタで、nsIWidget::OnIMEFocusChange(true)
の戻り値を確認しないようにし、代わりに、nsIWidget::GetIMEUpdatePreference()
になりました。これにより、widget側では、実装しているにも関わらず、nsIWidget::OnIMEFocusChange(true)
がNS_ERROR_NOT_IMPLEMENTED
を返さなくて済むようになっています。
本当であればnsIWidget::OnIMEFocusChange()
の戻り値をvoid
にしたかったのですが、そのためにインターフェースを変更するのも良くありませんので、そのままにしてあります。まだ承認されるかは分かりませんが、nsIWidget
のIME関連APIの再構成の祭に削除する可能性が高いAPIですし。