diff --git a/src/elements/Container.lua b/src/elements/Container.lua index 0809436..1fa1e63 100644 --- a/src/elements/Container.lua +++ b/src/elements/Container.lua @@ -24,7 +24,7 @@ Container.defineProperty(Container, "childrenEvents", {default = {}, type = "tab ---@property eventListenerCount table {} The event listener count of the container Container.defineProperty(Container, "eventListenerCount", {default = {}, type = "table"}) ---@property focusedChild table nil The focused child of the container -Container.defineProperty(Container, "focusedChild", {default = nil, type = "table", setter = function(self, value, internal) +Container.defineProperty(Container, "focusedChild", {default = nil, type = "table", allowNil=true, setter = function(self, value, internal) local oldChild = self._values.focusedChild if value == oldChild then return value end diff --git a/src/propertySystem.lua b/src/propertySystem.lua index 65ebdfe..df15068 100644 --- a/src/propertySystem.lua +++ b/src/propertySystem.lua @@ -51,6 +51,7 @@ function PropertySystem.defineProperty(class, name, config) canTriggerRender = config.canTriggerRender, getter = config.getter, setter = config.setter, + allowNil = config.allowNil, } local capitalizedName = name:sub(1,1):upper() .. name:sub(2) @@ -69,7 +70,15 @@ function PropertySystem.defineProperty(class, name, config) value = applyHooks(self, name, value, config) if type(value) ~= "function" then - expect(2, value, config.type) + if config.type == "table" then + if value == nil then + if not config.allowNil then + expect(2, value, config.type) + end + end + else + expect(2, value, config.type) + end end if config.setter then