Bug-org 558976 IME related methods of nsIWidget should be merged
初回投稿日時: 2013-03-27 18:55:51
カテゴリ: Mozilla Core Mozilla22 バグ修正
SNS:
Tweet (list)
GeckoのXP部分のソースコードは、nsIWidgetの様々なメソッドを使って、ネイティブのIMEにリクエストを出したり、通知したりしていますが、今までは、それぞれのためにメソッドを追加する、という形をとっていました。しかし、これでは、ただでさえ巨大化しているnsIWidgetをますます肥大化させる可能性があり、メンテナンスの際にもインターフェースの変更が必要な分、super reviewの手間がかかります。これでは、非常に効率が悪いので、今回、整理を行いました。
新たに、nsIWidget::NotifyIME(mozilla::widget::NotificationToIME aNotification)というAPIを追加しました。aNotificationで、リクエストの内容や、通知内容を指定します。
NOTIFY_IME_OF_CURSOR_POS_CHANGEDエディタに未確定文字列が無い場合に、
nsIEditorIMESupport::forceCompositionEnd()が呼ばれた場合にのみ、呼び出されます。これは、従来のnsIWidget::ResetInputState()の本来の機能を置き換えます。REQUEST_TO_COMMIT_COMPOSITIONエディタに未確定文字列がある場合に、これを強制確定する際に呼び出されます。
nsIWidget::ResetInputState()のモダンな実装を置き換えます。REQUEST_TO_CANCEL_COMPOSITIONエディタに未確定文字列がある場合に、これを破棄する際に呼び出されます。
nsIWidget::CancelComposition()を置き換えます。NOTIFY_IME_OF_FOCUSエディタがフォーカスを得た場合に呼び出されます。
nsIWidget::OnIMEFocusChange(true)を置き換えます。NOTIFY_IME_OF_BLURエディタがフォーカスを失った場合に呼び出されます。
nsIWidget::OnIMEFocusChange(false)を置き換えます。NOTIFY_IME_OF_SELECTION_CHANGEエディタ内のキャレット位置、もしくは選択範囲が変更された場合に呼び出されます。
nsIWidget::OnIMESelectionChange()を置き換えます。
REQUESTというネーミングから分かるように、実際に、これらが動作するかは、ネイティブIMEのAPIに依存します。
置き換えられたメソッドは全て、削除され、すっきりとしています。
また、新しいメソッド名にあわせて、nsIWidget::OnIMETextChange(uint32_t aStart, uint32_t aOldEnd, uint32_t aNewEnd)は、nsIWidget::NotifyIMEOfTextChange(uint32_t aStart, uint32_t aOldEnd, uint32_t aNewEnd)にリネームしています。