Mozilla 開発から遠ざかっていたのだけれど、Mac 版を開発している人が TSM(IME, 要は仮名漢字変換) イベント周りを書き直した後のトラブルを見てコードを見ました。
結果を残すのは大変です。口は出したけれど、自分でパッチを作る技術と時間がありません。
問題が起きたのはイベントハンドラを Classic Event から Carbon Event に書き直そうとした Bug-org 332579 の作業が終わってからで、追跡するバグが Bug-org 337199 として登録されました。
Bug-org 332579 - Improve Mac event handling for 1.8.1
https://bugzilla.mozilla.org/show_bug.cgi?id=332579
Bug-org 337199 - Keypress events for RETURN key processed but return nsEventStatus_eIgnore (RETURN key events double-processed)
https://bugzilla.mozilla.org/show_bug.cgi?id=337199
Mac OS X で Classic アプリを Carbon アプリにするには、イベント処理を Carbon 風にしなくても構わないんです。Classic Event (あの WaitNextEvent() ) + Apple Event のままで一応動きます。ただし CPU パワーをよけいに食う重いアプリになります。
Firefox/Thunderbird はずっとイベント周りが Classic Event + Apple Event でした。今実用されている 1.5.0.x もそうです。ただ、やっぱり重いのはユーザへの印象が悪いので、Firefox 2 を前にそこを Carbon Event に書き直す開発者が現れました。そしたら書き直しが不十分で仮名漢字変換が動かなくなりました。いつ直るかと期待して見ていたら、TSM(IME) 周りを Apple Event に戻せば動くから戻す作業が始まりました。
ちょっと待て、今更戻るのか、と怒ってソースコードを見てみたら、確かに大変です。キーイベントを格納する構造体に Apple Event のデータ構造への参照があって、イベントを処理するコードがそれを参照しているんです。Apple Event を見るのを止めて Carbon Event を見て処理しようとすると、大量の関連コードを書き直す必要が出てきます。
私にはキーイベントハンドラのオーバーホールはできません。さて、誰かがやるのでしょうか。
なお Firefox 3 は Cocoa アプリになる予定です。現在の Camino のソースコードが使われる予定です。
結果を残すのは大変です。口は出したけれど、自分でパッチを作る技術と時間がありません。
問題が起きたのはイベントハンドラを Classic Event から Carbon Event に書き直そうとした Bug-org 332579 の作業が終わってからで、追跡するバグが Bug-org 337199 として登録されました。
Bug-org 332579 - Improve Mac event handling for 1.8.1
https://bugzilla.mozilla.org/show_bug.cgi?id=332579
Bug-org 337199 - Keypress events for RETURN key processed but return nsEventStatus_eIgnore (RETURN key events double-processed)
https://bugzilla.mozilla.org/show_bug.cgi?id=337199
Mac OS X で Classic アプリを Carbon アプリにするには、イベント処理を Carbon 風にしなくても構わないんです。Classic Event (あの WaitNextEvent() ) + Apple Event のままで一応動きます。ただし CPU パワーをよけいに食う重いアプリになります。
Firefox/Thunderbird はずっとイベント周りが Classic Event + Apple Event でした。今実用されている 1.5.0.x もそうです。ただ、やっぱり重いのはユーザへの印象が悪いので、Firefox 2 を前にそこを Carbon Event に書き直す開発者が現れました。そしたら書き直しが不十分で仮名漢字変換が動かなくなりました。いつ直るかと期待して見ていたら、TSM(IME) 周りを Apple Event に戻せば動くから戻す作業が始まりました。
ちょっと待て、今更戻るのか、と怒ってソースコードを見てみたら、確かに大変です。キーイベントを格納する構造体に Apple Event のデータ構造への参照があって、イベントを処理するコードがそれを参照しているんです。Apple Event を見るのを止めて Carbon Event を見て処理しようとすると、大量の関連コードを書き直す必要が出てきます。
私にはキーイベントハンドラのオーバーホールはできません。さて、誰かがやるのでしょうか。
なお Firefox 3 は Cocoa アプリになる予定です。現在の Camino のソースコードが使われる予定です。