この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2016年1月)

2016年1月30日

Bug-org 1052947 WidgetMouseEvent::e4thButtonFlag and e5thButtonFlag or windows WM_XBUTTONDOWN / XBUTTON1 mouse events are always handeled as Browser: Forward and Browser:Back and there is no option to disable this functionality in about:config or anywhere else
初回投稿日時: 2016年01月30日19時20分19秒
カテゴリ: Firefox Mozilla Core Mozilla46 Windows バグ修正
SNS: (list)

Windowsでは、5ボタンのマウスに専用のユーティリティが付属していない場合、第四ボタンを押すと、WM_XBUTTONDOWNWM_XBUTTONUPメッセージがXBUTTON1のイベントとして発生します。これを::DefWindowProc()に渡すと、Windowsはブラウザの「戻る」を促すWM_APPCOMMANDメッセージを生成します。

同様に、第五ボタンを押すと、WM_XBUTTONDOWNWM_XBUTTONUPメッセージがXBUTTON2のイベントとして発生し、これを::DefWindowProc()に渡すと、Windowsはブラウザの「進む」を促すWM_APPCOMMANDメッセージを生成します。

MicrosoftやLogicoolのマウス等、ユーティリティが付属している場合はこれらのボタンを無効化することで、これらのボタンの利用をやめる(誤操作での意図しないページ移動を防ぐ)ことができますが、そうではない、Windows標準のドライバだけで動作する安価なマウスではこれを防ぐ方法がありません(ひょっとするとレジストリをいじるとできるのかもしれませんが)。

このバグは、そのような無効化機能をFirefox自体に実装してprefsで無効化できるようにしておいて欲しいというものです。

今回の修正で、mousebutton.4th.enabledmousebutton.5th.enabledというprefを新設し、これらがfalseに設定されていた場合、WM_XBUTTONDOWNWM_XBUTTONUPメッセージを::DefWindowProc()に渡さないようにして、WM_APPCOMMANDの生成を妨害するようにしています。

関連するかもしれないエントリ

bug-org 1052947を含むエントリ