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

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

もずはっく日記(2010年4月)

2010年4月12日

Bug-org 552163 [OOPP]Can not start scroll page by mouse wheel when mouse cursor is over a flash video.
初回投稿日時: 2010年04月12日19時11分22秒
カテゴリ: Mozilla Core バグ修正
SNS: (list)

OOPPで別プロセスのウインドウを生成するとその上ではマウスホイールでスクロールできないというバグです。

Geckoはカーソル下のウインドウでホイールイベントを生成していますが、このときにnsWindowのメソッドを直接呼び出します。このポインタは発見したウインドウにあらかじめプロパティとして保存しておいたものですが、プロセスをまたいで取得できてしまいます。このため、別のプロセスのnsWindowに対してアクセスしてしまうと、当然のことながらクラッシュします。このクラッシュを防ぐために、Geckoは発見したウインドウハンドルが別プロセスのものなら処理を中断していました。

というわけで、OOPPによって生成された別プロセスのウインドウ上でも、処理を全く行っていない、というのがこのバグの原因でした。対策として、別プロセスのウインドウだった場合、ウインドウのツリーを遡っていって、自分のプロセスのウインドウが出現した場合、そのウインドウに対してSendMessage()でメッセージをリダイレクトするようにしています。

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

bug-org 552163を含むエントリ