Added allowNil to properties

This commit is contained in:
Robert Jelic
2025-04-11 22:48:41 +02:00
parent 7c208d3ea6
commit 84f860a18a
2 changed files with 11 additions and 2 deletions

View File

@@ -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

View File

@@ -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