Bug-org 1154183 nsXBLWindowKeyHandler shouldn't fire keydown events in content when following keypress event is "reserved" by XUL <command> element
初回投稿日時: 2016年10月15日22時14分26秒
最終更新日時: 2016年10月16日10時28分20秒
カテゴリ: Events KeyboardEvent Mozilla Core Mozilla48 バグ修正
SNS:
Tweet (list)
Bug-org 1203059の修正により、予約済みのショートカットキーにマッチするkeypress
イベントはWebコンテンツ上では発火されなくなりました。しかし、keydown
イベントは引き続き発火されるままなので、keydown
イベントのpreventDefault()
を呼び出すことにより、相変わらず、予約されているショートカットキーを無効化できてしまいます。
この修正では、予約されているショートカットキーは、keydown
イベントの段階で処理ハンドリングされるように修正しました。このため、chromeスクリプト内といえども、予約されているキーコンビネーションではそもそもkeypress
イベント自体が発火しなくなっています。
この修正では、予約されているショートカットキーのkeydown
イベントも、nsXBLWindowKeyHandler
によって、Webコンテンツ上ではデフォルトグループのリスナを実行しないように修正されました。また、副作用を抑えるために、keydown
はそのまま流し、keypress
イベントを従来通りに処理するように修正しています。
また、"key hell"に対応するため、各widgetのTextEventDispatcherListener::WillDispatchKeyboardEvent()
を修正し、eKeyDown
イベントの場合もmAlternativeCharCodes
に様々なモディファイアキーの状態の際に入力される文字の情報をセットするようにし、また、その最初に、続いて発生するeKeyPress
イベントのmCharCode
値にあたるものをセットするようにしています(この修正のために、Bug-org 1137572の修正や、それに付随した各OS向けのwidgetの変更が必要だったわけです)。