この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、
断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。
Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではない ことに注意してください。
現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。
順次、修正していく予定ですのでしばらくお待ちください。
もずはっく日記(2011年3月)
2011年3月1日
再現方法がよく分からないクラッシュバグで、Trunk以外のMac版で希に発生していたようです。
CocoaのNSViewの派生クラスと、GeckoのnsIWidgetの派生クラスがそれぞれ、Objective-Cと、C++で分離している特殊事情から、前者が生存していても、後者は既に死んでいる可能性があります。このバグはスタックトレースからそういう状況であることは分かっていますが、どのようにその状況下でIMEの未確定文字列のイベントが発生したのかはきちんと検証していません。
Trunkでは安全策で入っていたコードのおかげで発生していませんでしたので、それをそのまま1.9.2 branchと1.9.1 branchにも入れました。承認が下りれば、1.9.0 branch (Camino 2.0専用)でも修正される予定です。
2011年3月24日
Firefox 4.0では、Flash上で日本語入力できない、という話をちょこちょこと見かけるので、ここで紹介しておきます。
情報が少なくて断言はできませんが、これはFlash Player側の問題だと思います。
64bit対応のため、WebKitと同様にpluginのイベントモデルをCarbonからCocoaに置き換えましたが、何故かFx上ではWebKitと同じようにIMEが使えません。AdobeのMichelle Sintovさんは内部の開発版では修正できていると言っていますが、まだリリースされていませんね。
ちなみに、Silverlightだと入力できるのは確認できています(相変わらずインライン入力はできないので使いにくいですが)。
2011年3月28日
Firefoxボタンが出ている状態で、タイトルバーのドラッグを開始しようとしても、メニューが閉じられるだけでドラッグできないというバグです。個人的に、意外とイラッとさせられることの多かったバグです。
Windowsではメニューがポップアップしている状態で、メニュー以外の場所でマウスのボタンを押すと、そのイベントはメニューを閉じつつ、カーソル位置のウインドウによって本来の処理も継続するはずなのですが、XULのボタンにひも付いたメニューではそのように動作していなかったのが原因です。
このバグの修正で、Windowsではボタンにひも付いたメニューでも、閉じた後にマウスボタンのイベントを消費してしまわないように修正しています。このため、他のXULウィジットにも影響は出ていますのでご注意を。
それにしても、Windowsは、ドロップダウンリストだとマウスボタンイベントを消費するのにメニューでは消費しない、と、不思議な動作の差がありますね。
ちなみに、ブックマークツールバーのメニューは相変わらずマウスボタンイベントを消費してしまいます。おそらくtoolkitの方のどこかで、消費してしまっているのではないかと思いますが……
Firefoxボタン内のサブメニューが開いたときや、ブックマークツールバーのメニューを開いている時のバグはBug-org 645662 に登録して、パッチを出しました。
2011年3月29日
ちょっと、サマリが変なんですが、SCIMのハングル用のエンジンを使っていると、未確定文字列をBackspace キーで全て消しても、preedit_end
シグナルが発生せず、GeckoはIMEの変換が続いていると考えて、その後のBackspace キーの入力を無視し続ける、というバグです。
Geckoでは、editor側の制限から、widget側では、未確定の状態ではキーイベントを生成しないようにしています。このため、gtk_im_context_filter_keypress()
の戻り値は未確定状態では常に無視しています。
今回の修正では、この戻り値がFALSE
の場合でなおかつ、キーイベントがGDK_KEY_PRESS
で、なおかつ未確定文字列が空の場合、一度、エディタ上では空の文字列で強制確定するようにしてつじつまをあわせています。再び未確定文字列が来ると、自動的にcompositionstart
イベントから再開されるので、Webアプリ側から見ると特に変化はありません。
重大な問題ですが、報告が遅すぎたのと、他のIM全てでなんらかの影響がある可能性があるのでFx4.0には申請しませんでしたが、今後、特に問題が報告されなければ、2.0 branchへの投入の申請をしようと考えています。
2011年3月31日
CSS3のtext-decoration-style
と、text-decoration-color
を-moz-
プリフィックス付きですが実装しました。
青い点線の下線
緑の破線の下線
赤い二重線の下線
オレンジの波線の下線
青い点線の上線
緑の破線の上線
赤い二重線の上線
オレンジの波線の上線
青い点線の取り消し線
緑の破線の取り消し線
赤い二重線の取り消し線
オレンジの波線の取り消し線
ちなみに、text-decoration
は今回は修正していません。CSS3では、colorやstyleを一括指定できるshorthandプロパティになる予定ですが、-moz-
プリフィックスが取り除ける程度に仕様が安定するまでは将来の仕様との互換問題が発生しないように実装する予定はありません。
Linux版のGeckoのみ、モディファイアキーのkeydown
イベント等で、該当するプロパティがtrue
にならず、keyup
イベントでは逆にtrue
のまま、というバグです。
GTK2のネイティブイベントは、そのキーイベントの直前のモディファイアキーの状態をアプリケーションに対して通知してくるため、この様な変なバグが発生していました。ひとまず、算出が簡単なkeydown
イベントと、keypress
イベントに関してはこの修正で修正されています。keyup
イベントに関しては、DOM3のKeyboardEvent.repeat
の実装時に共有可能なコードを書くので、その時に修正予定です。
先日のBug-org 627272の修正 の続きです。
これの修正によって、Firefoxボタン内のサブメニューや、ブックマークツールバーのフォルダを開いている状態からでも、タイトルバーのドラッグを開始したりできるようになっています。
サイドバー
日記内のナビゲーション
Twitter