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

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

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

2010年9月22日

Bug-org 597389 If plug-ins disable non-Roman keyboard layout and they don't recover the state, Gecko doesn't recover it
初回投稿日時: 2010年09月22日01時51分22秒
カテゴリ: Mozilla Core バグ修正
SNS: (list)

Geckoのバグではないんですが、修正しました。

Flash Playerが10.1.x.xになってから、FlashのコンテンツをMacでクリックすると、何故かパスワードフィールドにフォーカスがある時と同じようにキーボードレイアウトがASCII互換のものに制限されるようになりました。そのままGeckoにフォーカスを戻すと、Flashは正しくこの制限を解除するのですが、Flash内のリンクをクリックしてそのFlashがunloadされた場合、この制限を解除してくれません。このため制限がかかったままになっている、というバグです。

Geckoはパスワードフィールドで同じ制限をかけているので元に戻す機能は元々あります。そのため、一度パスワードフィールド(もしくはime-mode: disabled;なエディタ)にフォーカスを合わせて、その後フォーカスを移動させると制限が解除されます。

10.4以前のMacではなんと、この制限が現在かかっているかどうかを確認するAPIが無かったので、APIの不要な呼び出しを削減するために自分たちが制限を行ったかどうかを記憶しておき、行った場合にのみフォーカス移動時に解除するようにしていたため、このような動作になっていました。

今回の修正で、フォーカス移動のたびにこのAPIを無条件に呼び出すようになりました。ひょっとするとフォーカス移動時のパフォーマンスが低下している可能性がありますが、それ以上の問題だったのでひとまずこれで良いかと思います。

ちなみにtrunkでは10.5以降で追加された新API群で動いているので問題ありませんでした。Fx3.6の1.9.2 branchと、Fx3.5の1.9.1 branch(Seamonkeyでしばらく存命の予定)でのみ修正を行っています。

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

bug-org 597389を含むエントリ