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)
にリネームしています。