diff --git a/generator/Parameters.cs b/generator/Parameters.cs index 9ebecea17..1b0544d5f 100644 --- a/generator/Parameters.cs +++ b/generator/Parameters.cs @@ -206,7 +206,7 @@ namespace GtkSharp.Generation { return false; } - if (p.IsOptional && p.PassAs == String.Empty) + if (p.IsOptional && p.PassAs == String.Empty && p.IsUserData == false) has_optional = true; IGeneratable gen = p.Generatable; diff --git a/generator/Property.cs b/generator/Property.cs index 7e0e09549..5dd7cc74a 100644 --- a/generator/Property.cs +++ b/generator/Property.cs @@ -68,10 +68,14 @@ namespace GtkSharp.Generation { } protected virtual string RawGetter (string qpname) { + if (container_type is InterfaceGen) + return "implementor.GetProperty (" + qpname + ")"; return "GetProperty (" + qpname + ")"; } protected virtual string RawSetter (string qpname) { + if (container_type is InterfaceGen) + return "implementor.SetProperty(" + qpname + ", val)"; return "SetProperty(" + qpname + ", val)"; } diff --git a/generator/StructField.cs b/generator/StructField.cs index 292d99814..78a15fb36 100644 --- a/generator/StructField.cs +++ b/generator/StructField.cs @@ -102,7 +102,11 @@ namespace GtkSharp.Generation { public bool IsPadding { get { - return (CName.StartsWith ("dummy") || CName.StartsWith ("padding")); + if (elem.GetAttributeAsBoolean ("is-padding")) + return elem.GetAttributeAsBoolean ("is-padding"); + + return (elem.GetAttribute ("access") == "private" && ( + CName.StartsWith ("dummy") || CName.StartsWith ("padding"))); } }