From: Masao M. <po...@s5...> - 2004-01-26 16:55:16
|
むとうです。 On Tue, 27 Jan 2004 01:13:06 +0900 (JST) Masahiro Sakai (酒井政裕) <sa...@to...> wrote: > さかいです。 > > From: Masao Mutoh <po...@s5...> > Date: Tue, 27 Jan 2004 00:48:21 +0900 > > > むとうです。 > > > > ふと気づいたのですが、GLib::Object.install_propertyって > > > > GLib::Object.install_property(param, id = 1) > > > > で、オリジナルのGLibとは逆ですよね。 > > 元のAPIをベースに素直に考えると > > > > GLib::Object.install_property(id, param) > > > > として、(プロパティが1つのクラスにいくつか登録される > > ことを考慮すれば)idは必須とすべきかと思うのですが、 > > 逆にしたのに何か意味がありますか? > > GLib::Object.install_property で登録されたプロパティは > rbgobj_object.c の get_prop_func(), set_prop_func() でアクセスされますが、 > この2つの関数は id を使っていないからです。 なるほど。そうか、type_register自体が新しいGObjectを生成してるんですね。 --- 実は、最近、Gtk::Container.install_child_property()をインプリしようとして (type-register.rb:11336): Gtk-CRITICAL **: file gtkcontainer.c: line 718 (gtk_container_class_install_child_property): assertion `cclass->set_child_property != というエラーが出てハマってたんですよね。 さかいさんのコードを見て気づいたのですが、 要は、Gtk::Container.type_registerってGLib::Object.type_registerとは別に 定義しないといけないってことなんですね。うーむ、めんどくちゃいなー。 -- .:% Masao Mutoh<mu...@hi...>-- .:% Masao Mutoh<mu...@hi...> |