local gears_obj = require("gears.object") local button, meta = awesome._shim_fake_class() local function new_button(_, args) local ret = gears_obj() ret._private = args or {} -- The miss handler wont work for this. for k, v in pairs(ret._private) do rawset(ret, k, v) end if not rawget(ret, "modifiers") then rawset(ret, "modifiers", {}) end --TODO v5: remove this. ret.data = ret._private rawset(ret, "_is_capi_button", true) local md = setmetatable(ret, { __index = function(...) return meta.__index(...) end, __newindex = function(...) return meta.__newindex(...) end }) assert((not args) or args.button == md.button) return md end return setmetatable(button, { __call = new_button, }) -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80