q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=54d7fed7b65de488d64e7126695a79252705166e
commit 54d7fed7b65de488d64e7126695a79252705166e Author: Daniel Kolesa <[email protected]> Date: Fri Oct 17 16:14:49 2014 +0100 elua: handle event/property mixins correctly in eo --- src/bindings/luajit/eo.lua | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/bindings/luajit/eo.lua b/src/bindings/luajit/eo.lua index 88bec9e..4169b08 100644 --- a/src/bindings/luajit/eo.lua +++ b/src/bindings/luajit/eo.lua @@ -197,8 +197,26 @@ M.class_unregister = function(name) eo_classes[addr] = nil end +local mixin_tbl = function(cl, mixin, field) + local mxt = mixin[field] + if mxt then + local clt = cl[field] + if not clt then + cl[field] = mxt + else + for k, v in pairs(mxt) do clt[k] = v end + end + mixin[field] = nil + end +end + M.class_mixin = function(name, mixin) - classes[name]:mixin(classes[mixin]) + local cl = classes[name] + -- mixin properties/events + mixin_tbl(cl, mixin, "__properties") + mixin_tbl(cl, mixin, "__events") + -- mixin the rest + cl:mixin(classes[mixin]) end local obj_gccb = function(obj) --
