From: Masao M. <mu...@hi...> - 2003-09-21 15:27:15
|
むとうです。 On Sun, 21 Sep 2003 13:24:59 +0900 (JST) Masahiro Sakai (酒井政裕) <sa...@to...> wrote: > さかいです。 > > From: Masao Mutoh <mu...@hi...> > Subject: [ruby-gnome2-devel-ja] GLib::MetaInterface#signal_override, #signal_chain_from_overridden > Date: Sun, 21 Sep 2003 11:00:00 +0900 > > > さかいさん > > > > むとうです。 > > > > GLib::MetaInterface#signal_override, > > GLib::MetaInterface#signal_chain_from_overridden > > > > ってどういうときに使うものなのでしょうか。 > > http://developer.gnome.org/doc/API/2.0/gobject/gobject-Signals.html#g-signal-override-class-closure > > signal_overrideはシグナルのデフォルトハンドラを > サブクラスでオーバーライドするためのメソッドです。 > > signal_chain_from_overridden はサブクラスのデフォルトハンドラから、 > スーパークラスのデフォルトハンドラを呼ぶためのメソッドです。 > > > あと、以前あったsignal_newとはどのように違うのでしょうか。 > > signal_overrideが既存のシグナルのデフォルトハンドラを > オーバーライドするのに対して、signal_newは新しいシグナルを定義します。 うーむ、難しいですね。 signal_chain_from_overriddenを使うと、シグナルのEmit時に signal_overrideのハンドラが呼ばれて、その後(その中で?) スーパークラスのハンドラが呼ばれるというような感じでしょうか。 superclass.signal_emitとかじゃダメなのかな。 あと、サブクラスでスーパークラスのデフォルトハンドラと同じ 名前のシグナルをsignal_newしようとするとエラーになるのでしょうか。 なんか、その辺も微妙にしっくりこないような....。しょうがないのかな。 > P.S. > signal_overrideが処理をブロックに渡すのに対して、 > signal_newでは処理を「do_シグナル名」というメソッドに > ディスパッチしているのは統一性がないですね。 > どうにかしよう…… そうですねぇ。 全然ついてけてないですけど、この辺は慎重に行きましょう。 それでは。 -- .:% Masao Mutoh<mu...@hi...> |