Small fixes

- changed custom event "dynamicValueEvent" into "basalt_dynamicvalue"
- fixed disabling autoscroll bug for frames
- added custom event handler for custom basalt events (should also fix basalt_resize and basalt_reposition events on children objects)
- fixed scrolling
- Changed selectItem: wont trigger a onChange event anymore
This commit is contained in:
Robert Jelic
2022-10-13 19:25:14 +02:00
parent 6e8f978e7c
commit 61c2182300
9 changed files with 63 additions and 49 deletions

View File

@@ -240,11 +240,11 @@ return function(name, parent, pTerm, basalt)
end
return false
end
local math = math
local function stringToNumber(str)
local ok, err = pcall(load("return " .. str))
local ok, result = pcall(load("return " .. str, "", nil, {math=math}))
if not(ok)then error(str.." is not a valid dynamic code") end
return load("return " .. str)()
return result
end
local function newDynamicValue(_, obj, str)
@@ -328,7 +328,7 @@ return function(name, parent, pTerm, basalt)
if (objects[index] ~= nil) then
for _, value in pairs(objects[index]) do
if (value.eventHandler ~= nil) then
value:eventHandler("dynamicValueEvent", self)
value:eventHandler("basalt_dynamicvalue", self)
end
end
end
@@ -341,12 +341,14 @@ return function(name, parent, pTerm, basalt)
end
local function calculateMaxScroll(self)
for _, value in pairs(objects) do
for _, b in pairs(value) do
if(b.getHeight~=nil)and(b.getY~=nil)then
local h, y = b:getHeight(), b:getY()
if (h + y - self:getHeight() > scrollAmount) then
scrollAmount = max(h + y - self:getHeight(), 0)
if(autoScroll)then
for _, value in pairs(objects) do
for _, b in pairs(value) do
if(b.getHeight~=nil)and(b.getY~=nil)then
local h, y = b:getHeight(), b:getY()
if (h + y - self:getHeight() ~= scrollAmount) then
scrollAmount = max(h + y - self:getHeight() - 1, 0)
end
end
end
end
@@ -398,8 +400,8 @@ return function(name, parent, pTerm, basalt)
for _, index in pairs(objZIndex) do
if (objects[index] ~= nil) then
for _, value in pairs(objects[index]) do
if (value.eventHandler ~= nil) then
value:eventHandler("basalt_resize", value, self)
if (value.customEventHandler ~= nil) then
value:customEventHandler("basalt_resize", self)
end
end
end
@@ -425,15 +427,6 @@ return function(name, parent, pTerm, basalt)
setPosition = function(self, x, y, rel)
base.setPosition(self, x, y, rel)
for _, index in pairs(objZIndex) do
if (objects[index] ~= nil) then
for _, value in pairs(objects[index]) do
if (value.eventHandler ~= nil) then
value:eventHandler("basalt_reposition", value, self)
end
end
end
end
self:recalculateDynamicValues()
return self
end;
@@ -794,9 +787,6 @@ return function(name, parent, pTerm, basalt)
self:mouseHandler(1, p2, p3, true)
end
end
if (event == "terminate")and(self.parent==nil)then
basalt.stop()
end
end,
mouseHandler = function(self, button, x, y, _, side)

View File

@@ -195,11 +195,13 @@ return function(name)
return self
end;
setValue = function(self, _value)
setValue = function(self, _value, valueChangedHandler)
if (value ~= _value) then
value = _value
self:updateDraw()
self:valueChangedHandler()
if(valueChangedHandler~=false)then
self:valueChangedHandler()
end
end
return self
end;
@@ -245,7 +247,7 @@ return function(name)
end
self.parent:recalculateDynamicValues()
end
eventSystem:sendEvent("basalt_reposition", self)
self:customEventHandler("basalt_reposition")
self:updateDraw()
return self
end;
@@ -288,7 +290,7 @@ return function(name)
end
self.parent:recalculateDynamicValues()
end
eventSystem:sendEvent("basalt_resize", self)
self:customEventHandler("basalt_resize")
self:updateDraw()
return self
end;
@@ -676,13 +678,25 @@ return function(name)
for _,v in pairs(table.pack(...))do
if(type(v)=="function")then
self:registerEvent("key", v)
self:registerEvent("char", v)
end
end
if(self.parent~=nil)then
self.parent:addEvent("key", self)
self.parent:addEvent("char", self)
activeEvents["key"] = true
end
end
return self
end;
onChar = function(self, ...)
if(isEnabled)then
for _,v in pairs(table.pack(...))do
if(type(v)=="function")then
self:registerEvent("char", v)
end
end
if(self.parent~=nil)then
self.parent:addEvent("char", self)
activeEvents["char"] = true
end
end
@@ -882,7 +896,7 @@ return function(name)
charHandler = function(self, char)
if(isEnabled)and(isVisible)then
if (self:isFocused()) then
local val = eventSystem:sendEvent("char", self, "char", char)
local val = eventSystem:sendEvent("char", self, "char", char)
if(val==false)then return false end
return true
end
@@ -894,8 +908,14 @@ return function(name)
eventSystem:sendEvent("value_changed", self, value)
end;
eventHandler = function(self, event, p1, p2, p3, p4)
local val = eventSystem:sendEvent("other_event", self, event, p1, p2, p3, p4)
eventHandler = function(self, event, ...)
local val = eventSystem:sendEvent("other_event", self, event, ...)
if(val~=nil)then return val end
return true
end;
customEventHandler = function(self, event, ...)
local val = eventSystem:sendEvent(event, self, event, ...)
if(val~=nil)then return val end
return true
end;

View File

@@ -188,6 +188,10 @@ uuid = function()
return uuid()
end,
array = function(arraysize, hashsize)
return load("return {" .. ("nil,"):rep(arraysize) .. ("[0]=nil,"):rep(hashsize) .. "}")()
end,
shrink = function(image, bgCol)
local results, width, height, bgCol = {{}, {}, {}}, 0, #image + #image % 3, bgCol or colours.black
for i = 1, #image do if #image[i] > width then width = #image[i] end end

View File

@@ -216,7 +216,7 @@ local function basaltUpdateEvent(event, ...)
local mouseEvents = {
mouse_click = mainFrame.mouseHandler,
mouse_up = mainFrame.mouseUpHandler,
mouse_scroll = mainFrame.mouseScrollHandler,
mouse_scroll = mainFrame.scrollHandler,
mouse_drag = mouseDragEvent,
mouse_move = mouseMoveEvent,
}

View File

@@ -84,7 +84,7 @@ return function(name)
clear = function(self)
list = {}
self:setValue({})
self:setValue({}, false)
self:updateDraw()
return self
end;
@@ -101,7 +101,7 @@ return function(name)
end;
selectItem = function(self, index)
self:setValue(list[index] or {})
self:setValue(list[index] or {}, false)
self:updateDraw()
return self
end;

View File

@@ -24,8 +24,8 @@ return function(name)
addItem = function(self, text, bgCol, fgCol, ...)
table.insert(list, { text = text, bgCol = bgCol or self.bgColor, fgCol = fgCol or self.fgColor, args = { ... } })
if (#list == 1) then
self:setValue(list[1])
if (#list <= 1) then
self:setValue(list[1], false)
end
self:updateDraw()
return self
@@ -66,7 +66,7 @@ return function(name)
clear = function(self)
list = {}
self:setValue({})
self:setValue({}, false)
self:updateDraw()
return self
end;
@@ -83,7 +83,7 @@ return function(name)
end;
selectItem = function(self, index)
self:setValue(list[index] or {})
self:setValue(list[index] or {}, false)
self:updateDraw()
return self
end;

View File

@@ -68,7 +68,7 @@ return function(name)
clear = function(self)
list = {}
self:setValue({})
self:setValue({}, false)
self:updateDraw()
return self
end;
@@ -142,7 +142,7 @@ return function(name)
end;
selectItem = function(self, index)
self:setValue(list[index] or {})
self:setValue(list[index] or {}, false)
self:updateDraw()
return self
end;

View File

@@ -77,7 +77,7 @@ return function(name)
clear = function(self)
list = {}
self:setValue({})
self:setValue({}, false)
self:updateDraw()
return self
end;
@@ -94,7 +94,7 @@ return function(name)
end;
selectItem = function(self, index)
self:setValue(list[index] or {})
self:setValue(list[index] or {}, false)
self:updateDraw()
return self
end;

View File

@@ -3,7 +3,7 @@ local tHex = require("tHex")
local log = require("basaltLogs")
local xmlValue = require("utils").getValueFromXML
local rep = string.rep
local rep,find,gmatch,sub,len = string.rep,string.find,string.gmatch,string.sub,string.len
return function(name)
local base = Object(name)
@@ -23,13 +23,13 @@ return function(name)
local function stringGetPositions(str, word)
local pos = {}
if(str:len()>0)then
for w in string.gmatch(str, word)do
local s, e = string.find(str, w)
for w in gmatch(str, word)do
local s, e = find(str, w)
if(s~=nil)and(e~=nil)then
table.insert(pos,s)
table.insert(pos,e)
local startL = string.sub(str, 1, (s-1))
local endL = string.sub(str, e+1, str:len())
local startL = sub(str, 1, (s-1))
local endL = sub(str, e+1, str:len())
str = startL..(":"):rep(w:len())..endL
end
end