]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Support dynamic properties and signals also for GObject subtypes
authorJürg Billeter <j@bitron.ch>
Fri, 30 May 2008 23:48:58 +0000 (23:48 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Fri, 30 May 2008 23:48:58 +0000 (23:48 +0000)
2008-05-31  Jürg Billeter  <j@bitron.ch>

* gobject/valaccodedynamicpropertybinding.vala:
* gobject/valaccodedynamicsignalbinding.vala:

Support dynamic properties and signals also for GObject subtypes

svn path=/trunk/; revision=1505

ChangeLog
gobject/valaccodedynamicpropertybinding.vala
gobject/valaccodedynamicsignalbinding.vala

index 4913f7f33fe953d20a6a3eaadbce0f0388418194..8df2c2a6254a275deee31ed1065e6f6abde7e745 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+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:
index d589927a12ab60d8f02546067fc63f81b927eefd..1acda5fcb16c9d6aff5e58036a26c7353e10c085 100644 (file)
@@ -53,7 +53,8 @@ public class Vala.CCodeDynamicPropertyBinding : CCodeBinding {
                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 ()));
@@ -83,7 +84,8 @@ public class Vala.CCodeDynamicPropertyBinding : CCodeBinding {
                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 ()));
index 3c8ce3cb0b00a35c9e1f5a10b444cbdc3add723d..44388190212fa75651384b57000fff8bcd83847b 100644 (file)
@@ -59,7 +59,8 @@ public class Vala.CCodeDynamicSignalBinding : CCodeBinding {
                        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);