From 7b8ab77c9d004dfabb0e638c95b1648d21f62977 Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Fri, 8 May 2026 17:44:40 +0900 Subject: [PATCH] extra handling for frame args --- lua/wikis/commons/Widget/Component.lua | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/lua/wikis/commons/Widget/Component.lua b/lua/wikis/commons/Widget/Component.lua index d69a28df5e7..d9a06642ac7 100644 --- a/lua/wikis/commons/Widget/Component.lua +++ b/lua/wikis/commons/Widget/Component.lua @@ -48,7 +48,24 @@ ComponentCore.ComponentMT = { -- Apply DefaultProps via lightweight metatable -- Only shallow default props allowed if self.defaultProps then - setmetatable(props, { __index = self.defaultProps }) + local origMT = getmetatable(props) + if not origMT then + setmetatable(props, { __index = self.defaultProps }) + else + ---Calling from Widget/Factory requires extra handling + ---as frame arguments are hidden behind a separate metatable + local origProps = props + props = setmetatable({}, { + __index = function (newProps, key) + local origVal = origProps[key] + if origVal ~= nil then + return origVal + end + return self.defaultProps[key] + end, + __newindex = origProps + }) + end end return setmetatable({