+2008-05-31 Jürg Billeter <j@bitron.ch>
+
+ * gobject/valaccodedynamicpropertybinding.vala:
+ * gobject/valaccodedynamicsignalbinding.vala:
+
+ Support dynamic properties and signals also for GObject subtypes
+
2008-05-31 Jürg Billeter <j@bitron.ch>
* gobject/valaccodegenerator.vala:
func.add_parameter (new CCodeFormalParameter ("obj", dynamic_property.dynamic_type.get_cname ()));
var block = new CCodeBlock ();
- if (dynamic_property.dynamic_type.data_type == codegen.gobject_type) {
+ if (dynamic_property.dynamic_type.data_type != null
+ && dynamic_property.dynamic_type.data_type.is_subtype_of (codegen.gobject_type)) {
generate_gobject_property_getter_wrapper (block);
} else {
Report.error (node.source_reference, "dynamic properties are not supported for `%s'".printf (dynamic_property.dynamic_type.to_string ()));
func.add_parameter (new CCodeFormalParameter ("value", node.property_type.get_cname ()));
var block = new CCodeBlock ();
- if (dynamic_property.dynamic_type.data_type == codegen.gobject_type) {
+ if (dynamic_property.dynamic_type.data_type != null
+ && dynamic_property.dynamic_type.data_type.is_subtype_of (codegen.gobject_type)) {
generate_gobject_property_setter_wrapper (block);
} else {
Report.error (node.source_reference, "dynamic properties are not supported for `%s'".printf (dynamic_property.dynamic_type.to_string ()));
func.add_parameter (new CCodeFormalParameter ("handler", "GCallback"));
func.add_parameter (new CCodeFormalParameter ("data", "gpointer"));
var block = new CCodeBlock ();
- if (dynamic_signal.dynamic_type.data_type == codegen.gobject_type) {
+ if (dynamic_signal.dynamic_type.data_type != null
+ && dynamic_signal.dynamic_type.data_type.is_subtype_of (codegen.gobject_type)) {
generate_gobject_connect_wrapper (block);
} else if (dynamic_signal.dynamic_type.data_type == codegen.dbus_object_type) {
generate_dbus_connect_wrapper (block);