灯台下暗し -カッターナイフで恐竜を腑分けした記録-

仕事で携帯向けアプリを書いて、趣味で携帯電話を買い、趣味で同人小説を書いて、何もしていません。

文句を言うのは簡単で、結果を残すのは大変

2006-05-21 16:08:41 | Mozilla
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 のソースコードが使われる予定です。
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 旅行から帰ってきました | トップ | 生まれて初めての泣き上戸 »
最新の画像もっと見る

コメントを投稿

Mozilla」カテゴリの最新記事