From: Jürg Billeter Date: Fri, 17 Oct 2008 13:28:49 +0000 (+0000) Subject: Fix interface properties in GObject classes X-Git-Tag: VALA_0_4_0~10 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3776d2d49d198748a8e8186818581cc669e5330a;p=platform%2Fupstream%2Fvala.git Fix interface properties in GObject classes 2008-10-17 Jürg Billeter * vala/valainterface.vala: * gobject/valaccodetypesymbolbinding.vala: Fix interface properties in GObject classes svn path=/trunk/; revision=1851 --- diff --git a/ChangeLog b/ChangeLog index 1184398..6153761 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2008-10-17 Jürg Billeter + * vala/valainterface.vala: + * gobject/valaccodetypesymbolbinding.vala: + + Fix interface properties in GObject classes + +2008-10-17 Jürg Billeter + * gobject/valaccodeclassbinding.vala: * gobject/valaccodegenerator.vala: * vapi/glib-2.0.vapi: diff --git a/gobject/valaccodetypesymbolbinding.vala b/gobject/valaccodetypesymbolbinding.vala index 821ff65..22cd12a 100644 --- a/gobject/valaccodetypesymbolbinding.vala +++ b/gobject/valaccodetypesymbolbinding.vala @@ -32,9 +32,8 @@ public abstract class Vala.CCodeTypeSymbolBinding : CCodeBinding { if ((prop.property_type.data_type is Class && !(((Class) prop.property_type.data_type).is_compact)) || prop.property_type.data_type is Interface) { - //if ((prop.property_type.data_type is Class && ((Class) prop.property_type.data_type).is_subtype_of (codegen.gobject_type)) || prop.property_type.data_type is Interface) { string param_spec_name = prop.property_type.data_type.get_param_spec_function (); - if ( param_spec_name == null ) { + if (param_spec_name == null) { cspec.call = new CCodeIdentifier ("g_param_spec_pointer"); } else { cspec.call = new CCodeIdentifier ( param_spec_name ); diff --git a/vala/valainterface.vala b/vala/valainterface.vala index 83bc577..d5d8017 100644 --- a/vala/valainterface.vala +++ b/vala/valainterface.vala @@ -533,4 +533,16 @@ public class Vala.Interface : ObjectTypeSymbol { public override CodeBinding? create_code_binding (CodeGenerator codegen) { return codegen.create_interface_binding (this); } + + public override string? get_param_spec_function () { + foreach (DataType prerequisite in prerequisites) { + var prereq = prerequisite as ObjectType; + var cl = prereq.type_symbol as Class; + if (cl != null) { + return cl.get_param_spec_function (); + } + } + + return null; + } }