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)

-- 


Reply via email to