prop.set_accessor = new PropertyAccessor (false, (construct_only != "1") && (writable == "1"), (construct_only == "1") || (construct_ == "1"), prop.property_type.copy (), null, null);
}
- var getter = parent.lookup ("get_%s".printf (name));
- if (getter != null && getter.get_cname () != parent.get_lower_case_cprefix() + "get_" + name) {
- getter = null;
+ // find virtual/abstract accessors to handle abstract properties properly
+
+ Node getter = null;
+ var getters = parent.lookup_all ("get_%s".printf (name));
+ if (getters != null) {
+ foreach (var g in getters) {
+ if ((getter == null || !g.merged) && g.get_cname () == parent.get_lower_case_cprefix() + "get_" + name) {
+ getter = g;
+ }
+ }
}
- var setter = parent.lookup ("set_%s".printf (name));
- if (setter != null && setter.get_cname () != parent.get_lower_case_cprefix() + "set_" + name) {
- setter = null;
+
+ Node setter = null;
+ var setters = parent.lookup_all ("set_%s".printf (name));
+ if (setters != null) {
+ foreach (var s in setters) {
+ if ((setter == null || !s.merged) && s.get_cname () == parent.get_lower_case_cprefix() + "set_" + name) {
+ setter = s;
+ }
+ }
}
prop.set_attribute ("NoAccessorMethod", false);
if (prop.get_accessor != null) {
var m = getter != null ? getter.symbol as Method : null;
- if (m != null) {
+ // ensure getter vfunc if the property is abstract
+ if (m != null && (m.is_abstract || m.is_virtual || !prop.is_abstract)) {
getter.process (parser);
if (m.return_type is VoidType || m.get_parameters().size != 0) {
prop.set_attribute ("NoAccessorMethod", true);
}
if (prop.get_attribute ("NoAccessorMethod") == null && prop.set_accessor != null && prop.set_accessor.writable) {
var m = setter != null ? setter.symbol as Method : null;
- if (m != null) {
+ // ensure setter vfunc if the property is abstract
+ if (m != null && (m.is_abstract || m.is_virtual || !prop.is_abstract)) {
setter.process (parser);
if (!(m.return_type is VoidType) || m.get_parameters().size != 1) {
prop.set_attribute ("NoAccessorMethod", true);
public void set_subtitle_font_name (string font_name);
public void set_subtitle_uri (string uri);
public void set_uri (string uri);
+ [NoAccessorMethod]
public abstract double audio_volume { get; set; }
+ [NoAccessorMethod]
public abstract double buffer_fill { get; }
+ [NoAccessorMethod]
public abstract bool can_seek { get; }
+ [NoAccessorMethod]
public abstract double duration { get; }
+ [NoAccessorMethod]
public abstract bool playing { get; set; }
+ [NoAccessorMethod]
public abstract double progress { get; set; }
+ [NoAccessorMethod]
public abstract string subtitle_font_name { owned get; set; }
+ [NoAccessorMethod]
public abstract string subtitle_uri { owned get; set; }
+ [NoAccessorMethod]
public abstract string uri { owned get; set; }
public virtual signal void eos ();
public virtual signal void error (GLib.Error error);
public void set_axis (Mx.DragAxis axis);
public void set_drag_actor (Clutter.Actor actor);
public void set_drag_threshold (uint threshold);
+ [NoAccessorMethod]
public abstract Mx.DragAxis axis { get; set; }
- public abstract Clutter.Actor drag_actor { get; set; }
+ [NoAccessorMethod]
+ public abstract Clutter.Actor drag_actor { owned get; set; }
[NoAccessorMethod]
public abstract bool drag_enabled { get; set; }
+ [NoAccessorMethod]
public abstract uint drag_threshold { get; set; }
public virtual signal void drag_begin (float event_x, float event_y, int event_button, Clutter.ModifierType modifiers);
public virtual signal void drag_end (float event_x, float event_y);