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ですし。