Object: Fix registration of inherited interface properties

We need to add inherited interface properties in the Properties hash, so
we remove the DeclaredOnly flag when looking for interface properties in
the type.

We also need to use the type itself as the hash key, and not the adapter
type.
This commit is contained in:
Bertrand Lorentz 2011-12-03 16:18:24 +01:00
parent 1215ebc770
commit 91dda7f5be

View file

@ -422,16 +422,15 @@ namespace GLib {
if (attrs.Length == 0) if (attrs.Length == 0)
continue; continue;
PropertyAttribute property_attr = attrs [0]; PropertyAttribute property_attr = attrs [0];
PropertyInfo declared_prop = t.GetProperty (p.Name, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance); PropertyInfo declared_prop = t.GetProperty (p.Name, BindingFlags.Public | BindingFlags.Instance);
if (declared_prop == null) if (declared_prop == null)
continue; continue;
IntPtr param_spec = FindInterfaceProperty (adapter.GType, property_attr.Name); IntPtr param_spec = FindInterfaceProperty (adapter.GType, property_attr.Name);
Type type = (Type)adapter.GType;
Dictionary<IntPtr, PropertyInfo> props; Dictionary<IntPtr, PropertyInfo> props;
if (!Properties.TryGetValue (type, out props)) { if (!Properties.TryGetValue (t, out props)) {
props = new Dictionary<IntPtr, PropertyInfo> (); props = new Dictionary<IntPtr, PropertyInfo> ();
Properties [type] = props; Properties [t] = props;
} }
props [param_spec] = declared_prop; props [param_spec] = declared_prop;
} }