Bug-org 1163304 Nighglty crashes at [@ nsEditor::EnsureComposition(mozilla::WidgetGUIEvent*) ]
初回投稿日時: 2015年06月06日14時27分43秒
カテゴリ: GTK Mozilla Core Mozilla41 バグ修正
SNS:
Tweet (list)
Linux版のFirefoxでは、Altキーでメニューバーを表示し、続いて、文字入力のキーを押すことで、それに対応したメニューを開くことができます。しかし、検索バー等のエディタでサジェスト用のポップアップが既に開かれている状態で、なおかつIMEがオンになっている際にこの操作を行うとクラッシュするというバグです。
原因は、Altキーを押した際に疑似フォーカスがメニューバーに移動していないため、IMEの無効化が行われず、IMEが意図せずフォーカス済みのエディタを無視して動作してしまったために、Gecko内部での状態管理に矛盾が生じていたことにありました。
何故か、既にポップアップが開かれていると、メニューバーがアクティブになった際に、メニューバーのキーイベントリスナに主導権が渡されず、その結果、IMEStateManager
がIMEを無効化するタイミングを失っていました。
今回の修正では、メニューバーをアクティブにする前に、存在している全てのポップアップをまずは閉じるようにしました。これにより、UI上もユーザの混乱は無くなりますし、キーイベントの奪い合いも発生しなくなります。
ただし、この修正によって、存在しないとは思うのですが、ポップアップ上にメニューバーを設置しているアドオンはキーボードでそのメニューバーを開くことができなくなっています(しようとすると、そのポップアップ自体が閉じられてしまうため)。もし万が一そういうUIを持ったアドオンでこの問題を確認された方が居ましたら、bugzillaの方へ報告し、私にご一報ください。その場合、アクティブにしようとしてるメニューバーの親がポップアップかどうかを調査し、それより下位(見た目では上)にあるポップアップしか閉じないようにコードを追加します。