Skip to content

Commit cf082af

Browse files
committed
- Fixed reactive not using getResolved
- Fixed responsive using default value instead of lower priority state value
1 parent 424334c commit cf082af

3 files changed

Lines changed: 16 additions & 9 deletions

File tree

src/elements/BaseElement.lua

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ function BaseElement:setState(stateName, priority)
232232
end
233233

234234
states[stateName] = priority or 0
235+
235236
self.set("states", states)
236237
return self
237238
end
@@ -299,7 +300,9 @@ end
299300
function BaseElement:updateConditionalStates()
300301
for stateName, stateInfo in pairs(self._registeredStates) do
301302
if stateInfo.condition then
302-
if stateInfo.condition(self) then
303+
local result = stateInfo.condition(self)
304+
305+
if result then
303306
self:setState(stateName, stateInfo.priority)
304307
else
305308
self:unsetState(stateName)

src/plugins/reactive.lua

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ local function parseExpression(expr, element, propName)
9090
if objName == "self" then
9191
-- Check if property exists
9292
if element._properties[propName] then
93-
return element.get(propName)
93+
return element.getResolved(propName)
9494
end
9595
if element._registeredStates and element._registeredStates[propName] then
9696
return element:hasState(propName)
@@ -104,7 +104,7 @@ local function parseExpression(expr, element, propName)
104104
return nil
105105
elseif objName == "parent" then
106106
if element.parent._properties[propName] then
107-
return element.parent.get(propName)
107+
return element.parent.getResolved(propName)
108108
end
109109
if element.parent._registeredStates and element.parent._registeredStates[propName] then
110110
return element.parent:hasState(propName)
@@ -125,7 +125,7 @@ local function parseExpression(expr, element, propName)
125125
end
126126

127127
if target._properties[propName] then
128-
return target.get(propName)
128+
return target.getResolved(propName)
129129
end
130130
if target._registeredStates and target._registeredStates[propName] then
131131
return target:hasState(propName)

src/propertySystem.lua

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -335,12 +335,16 @@ function PropertySystem:__init()
335335
end
336336

337337
self.getResolved = function(name, ...)
338-
local currentState = self:getCurrentState()
339-
local value
338+
local activeStates = self:getActiveStates()
339+
local value = nil
340+
for _, stateInfo in ipairs(activeStates) do
341+
if self._states and self._states[stateInfo.name] and self._states[stateInfo.name][name] ~= nil then
342+
value = self._states[stateInfo.name][name]
343+
break
344+
end
345+
end
340346

341-
if currentState and self._states and self._states[currentState] and self._states[currentState][name] ~= nil then
342-
value = self._states[currentState][name]
343-
else
347+
if value == nil then
344348
value = self._values[name]
345349
end
346350

0 commit comments

Comments
 (0)