Some raygui controls return 1 instead of 0 when pressed or scrolled.

This commit is contained in:
jussi
2024-07-15 16:03:44 +03:00
parent 6552bd691a
commit f64b17ec71
6 changed files with 153 additions and 174 deletions

View File

@@ -219,22 +219,23 @@ function GuiTabBar:update()
return RL.CheckCollisionPointRec( RL.GetMousePosition(), self.bounds )
end
function GuiTabBar:getItem( id )
return getItems( self.text )[ id + 1 ]
end
function GuiTabBar:draw()
local oldActive = self.active
local result = -1
local result, active = RL.GuiTabBar( self.bounds, self.text, self.active )
result, self.active = RL.GuiTabBar( self.bounds, self.text, self.active )
if self.active ~= active then
if self._gui:clickedInBounds( self.bounds ) then
self.active = active
if self.active ~= oldActive then
if not self._gui:clickedInBounds( self.bounds ) then
self.active = oldActive
return
end
if self.callbacks.select ~= nil then
self.callbacks.select( self )
if self.callbacks.select ~= nil then
self.callbacks.select( self )
end
end
end
if 0 <= result and self.callbacks.close ~= nil and self._gui:clickedInBounds( self.bounds ) then
self.callbacks.close( self, result )
end
@@ -276,12 +277,11 @@ function ScrollPanel:update()
end
function ScrollPanel:draw()
local oldScroll = self.scroll:clone()
local _, scroll, view = RL.GuiScrollPanel( self.bounds, self.text, self.content, self.scroll, self.view )
local result, scroll, view = RL.GuiScrollPanel( self.bounds, self.text, self.content, self.scroll, self.view )
self.view:setT( view )
self.scroll:setT( scroll )
if self.scroll ~= oldScroll then
if 0 < result then
self._gui:checkScrolling()
if self.callbacks.scroll ~= nil then
@@ -438,15 +438,10 @@ function Toggle:update()
end
function Toggle:draw()
local oldActive = self.active
local result, active = RL.GuiToggle( self.bounds, self.text, self.active )
_, self.active = RL.GuiToggle( self.bounds, self.text, self.active )
if self.active ~= oldActive then
if not self._gui:clickedInBounds( self.bounds ) then
self.active = oldActive
return
end
if 0 < result and self._gui:clickedInBounds( self.bounds ) then
self.active = active
if self.callbacks.pressed ~= nil then
self.callbacks.pressed( self )
@@ -532,11 +527,9 @@ function ToggleGroup:update()
end
function ToggleGroup:draw()
local oldActive = self.active
local result, active = RL.GuiToggleGroup( self.bounds, self.text, self.active )
_, self.active = RL.GuiToggleGroup( self.bounds, self.text, self.active )
if self.active ~= oldActive then
if 0 < result then
local inBounds = false
for _, bounds in ipairs( self.focusBounds ) do
@@ -545,14 +538,12 @@ function ToggleGroup:draw()
break
end
end
if inBounds then
self.active = active
if not inBounds then
self.active = oldActive
return
end
if self.callbacks.select ~= nil then
self.callbacks.select( self )
if self.callbacks.select ~= nil then
self.callbacks.select( self )
end
end
end
end
@@ -596,21 +587,18 @@ function CheckBox:update()
end
function CheckBox:draw()
local oldChecked = self.checked
local textBounds = nil
_, self.checked, textBounds = RL.GuiCheckBox( self.bounds, self.text, self.checked )
local result, checked, textBounds = RL.GuiCheckBox( self.bounds, self.text, self.checked )
self.textBounds:setT( textBounds )
self.focusBounds = self.bounds:fit( self.textBounds )
self._focusBoundsOffset:set( self.focusBounds.x - self.bounds.x, self.focusBounds.y - self.bounds.y )
if self.checked ~= oldChecked then
if not self._gui:clickedInBounds( self.focusBounds ) then
self.checked = oldChecked
end
if 0 < result then
if self._gui:clickedInBounds( self.focusBounds ) then
self.checked = checked
if self.callbacks.pressed ~= nil then
self.callbacks.pressed( self )
if self.callbacks.pressed ~= nil then
self.callbacks.pressed( self )
end
end
end
end
@@ -650,18 +638,15 @@ function ComboBox:update()
end
function ComboBox:draw()
local oldActive = self.active
local result, active = RL.GuiComboBox( self.bounds, self.text, self.active )
_, self.active = RL.GuiComboBox( self.bounds, self.text, self.active )
if 0 < result then
if self._gui:clickedInBounds( self.bounds ) then
self.active = active
if self.active ~= oldActive then
if not self._gui:clickedInBounds( self.bounds ) then
self.active = oldActive
return
end
if self.callbacks.select ~= nil then
self.callbacks.select( self )
if self.callbacks.select ~= nil then
self.callbacks.select( self )
end
end
end
end
@@ -777,11 +762,7 @@ function Spinner:update()
end
function Spinner:draw()
local result = 0
local oldValue = self.value
local textBounds
result, self.value, textBounds = RL.GuiSpinner( self.bounds, self.text, self.value, self.minValue, self.maxValue, self.editMode )
local result, value, textBounds = RL.GuiSpinner( self.bounds, self.text, self.value, self.minValue, self.maxValue, self.editMode )
self.textBounds:setT( textBounds )
self.viewBounds = self.bounds:fit( self.textBounds )
self._viewBoundsOffset:set( self.viewBounds.x - self.bounds.x, self.viewBounds.y - self.bounds.y )
@@ -790,15 +771,15 @@ function Spinner:draw()
self._gui:editMode( self )
self.editMode = not self.editMode
end
if self.value ~= oldValue then
if not self._gui:clickedInBounds( self.bounds ) then
self.value = oldValue
return
if self.value ~= value then
if self._gui:clickedInBounds( self.bounds ) then
self.value = value
if self.callbacks.edit ~= nil then
self.callbacks.edit( self )
end
end
if self.callbacks.edit ~= nil then
self.callbacks.edit( self )
end
end
end
@@ -965,23 +946,20 @@ function Slider:update()
end
function Slider:draw()
local oldValue, textLeftBounds, textRightBounds = self.value, nil, nil
_, self.value, textLeftBounds, textRightBounds = RL.GuiSlider( self.bounds, self.textLeft, self.textRight, self.value, self.minValue, self.maxValue )
local result, value, textLeftBounds, textRightBounds = RL.GuiSlider( self.bounds, self.textLeft, self.textRight, self.value, self.minValue, self.maxValue )
self.textLeftBounds:setT( textLeftBounds )
self.textRightBounds:setT( textRightBounds )
self.viewBounds = self.bounds:fit( self.textLeftBounds ):fit( self.textRightBounds )
self._viewBoundsOffset:set( self.viewBounds.x - self.bounds.x, self.viewBounds.y - self.bounds.y )
if self.value ~= oldValue then
if not self._gui:clickedInBounds( self.bounds ) then
self.value = oldValue
return
end
self._gui:checkScrolling()
if 0 < result then
if self._gui:clickedInBounds( self.bounds ) then
self._gui:checkScrolling()
self.value = value
if self.callbacks.edit ~= nil then
self.callbacks.edit( self )
if self.callbacks.edit ~= nil then
self.callbacks.edit( self )
end
end
end
end
@@ -1029,23 +1007,20 @@ function SliderBar:update()
end
function SliderBar:draw()
local oldValue, textLeftBounds, textRightBounds = self.value, nil, nil
_, self.value, textLeftBounds, textRightBounds = RL.GuiSliderBar( self.bounds, self.textLeft, self.textRight, self.value, self.minValue, self.maxValue )
local result, value, textLeftBounds, textRightBounds = RL.GuiSliderBar( self.bounds, self.textLeft, self.textRight, self.value, self.minValue, self.maxValue )
self.textLeftBounds:setT( textLeftBounds )
self.textRightBounds:setT( textRightBounds )
self.viewBounds = self.bounds:fit( self.textLeftBounds ):fit( self.textRightBounds )
self._viewBoundsOffset:set( self.viewBounds.x - self.bounds.x, self.viewBounds.y - self.bounds.y )
if self.value ~= oldValue then
if not self._gui:clickedInBounds( self.bounds ) then
self.value = oldValue
return
end
self._gui:checkScrolling()
if 0 < result then
if self._gui:clickedInBounds( self.bounds ) then
self._gui:checkScrolling()
self.value = value
if self.callbacks.edit ~= nil then
self.callbacks.edit( self )
if self.callbacks.edit ~= nil then
self.callbacks.edit( self )
end
end
end
end
@@ -1093,22 +1068,19 @@ function ProgressBar:update()
end
function ProgressBar:draw()
local oldValue, textLeftBounds, textRightBounds = self.value, nil, nil
_, self.value, textLeftBounds, textRightBounds = RL.GuiProgressBar( self.bounds, self.textLeft, self.textRight, self.value, self.minValue, self.maxValue )
local result, value, textLeftBounds, textRightBounds = RL.GuiProgressBar( self.bounds, self.textLeft, self.textRight, self.value, self.minValue, self.maxValue )
self.textLeftBounds:setT( textLeftBounds )
self.textRightBounds:setT( textRightBounds )
self.viewBounds = self.bounds:fit( self.textLeftBounds ):fit( self.textRightBounds )
self._viewBoundsOffset:set( self.viewBounds.x - self.bounds.x, self.viewBounds.y - self.bounds.y )
if self.value ~= oldValue then
if not self._gui:clickedInBounds( self.bounds ) then
self.value = oldValue
return
end
if 0 < result then
if self._gui:clickedInBounds( self.bounds ) then
self.value = value
if self.callbacks.edit ~= nil then
self.callbacks.edit( self )
if self.callbacks.edit ~= nil then
self.callbacks.edit( self )
end
end
end
end
@@ -1218,13 +1190,10 @@ function Grid:update()
end
function Grid:draw()
local oldCell = self.mouseCell:clone()
local mouseCell = {}
_, mouseCell = RL.GuiGrid( self.bounds, self.text, self.spacing, self.subdivs, self.mouseCell )
local result, mouseCell = RL.GuiGrid( self.bounds, self.text, self.spacing, self.subdivs, self.mouseCell )
self.mouseCell:setT( mouseCell )
if oldCell ~= self.mouseCell and self.callbacks.cellChange ~= nil then
if 0 < result and self.callbacks.cellChange ~= nil then
self.callbacks.cellChange( self )
end
end
@@ -1271,15 +1240,14 @@ function ListView:update()
end
function ListView:draw()
local oldActive = self.active
local oldScrollIndex = self.scrollIndex
local result, oldScrollIndex = 0, self.scrollIndex
_, self.scrollIndex, self.active = RL.GuiListView( self.bounds, self.text, self.scrollIndex, self.active )
result, self.scrollIndex, self.active = RL.GuiListView( self.bounds, self.text, self.scrollIndex, self.active )
if self.scrollIndex ~= oldScrollIndex then
self._gui:checkScrolling()
end
if oldActive ~= self.active and self.callbacks.select ~= nil then
if 0 < result and self.callbacks.select ~= nil then
self.callbacks.select( self )
end
end
@@ -1323,15 +1291,14 @@ function ListViewEx:update()
end
function ListViewEx:draw()
local oldActive = self.active
local oldScrollIndex = self.scrollIndex
local result, oldScrollIndex = 0, self.scrollIndex
_, self.scrollIndex, self.active, self.focus = RL.GuiListViewEx( self.bounds, self.text, self.scrollIndex, self.active, self.focus )
result, self.scrollIndex, self.active, self.focus = RL.GuiListViewEx( self.bounds, self.text, self.scrollIndex, self.active, self.focus )
if self.scrollIndex ~= oldScrollIndex then
self._gui:checkScrolling()
end
if oldActive ~= self.active and self.callbacks.select ~= nil then
if 0 < result and self.callbacks.select ~= nil then
self.callbacks.select( self )
end
end
@@ -1480,15 +1447,11 @@ function ColorPicker:updateFocusBounds()
end
function ColorPicker:draw()
local oldColor = self.color:clone()
local _, color = RL.GuiColorPicker( self.bounds, self.text, self.color )
local result, color = RL.GuiColorPicker( self.bounds, self.text, self.color )
self.color = Color:newT( color )
if self.color ~= oldColor then
if not self._gui:clickedInBounds( self.focusBounds ) then
self.color = oldColor
return
if 0 < result then
if self._gui:clickedInBounds( self.focusBounds ) then
self.color = Color:newT( color )
end
self._gui:checkScrolling()
@@ -1532,19 +1495,15 @@ function ColorPanel:update()
end
function ColorPanel:draw()
local oldColor = self.color:clone()
local _, color = RL.GuiColorPanel( self.bounds, self.text, self.color )
local result, color = RL.GuiColorPanel( self.bounds, self.text, self.color )
if 0 < result then
if self._gui:clickedInBounds( self.bounds ) then
self.color:setT( color )
self.color = Color:newT( color )
if oldColor ~= self.color then
if not self._gui:clickedInBounds( self.bounds ) then
self.color = oldColor
return
end
if self.callbacks.edit ~= nil then
self.callbacks.edit( self )
if self.callbacks.edit ~= nil then
self.callbacks.edit( self )
end
end
end
end
@@ -1582,18 +1541,16 @@ function ColorBarAlpha:update()
end
function ColorBarAlpha:draw()
local oldAlpha = self.alpha
_, self.alpha = RL.GuiColorBarAlpha( self.bounds, self.text, self.alpha )
local result, alpha = RL.GuiColorBarAlpha( self.bounds, self.text, self.alpha )
if self.alpha ~= oldAlpha then
if not self._gui:clickedInBounds( self.bounds ) then
self.alpha = oldAlpha
return
end
self._gui:checkScrolling()
if 0 < result then
if self._gui:clickedInBounds( self.bounds ) then
self._gui:checkScrolling()
self.alpha = alpha
if self.callbacks.edit ~= nil then
self.callbacks.edit( self )
if self.callbacks.edit ~= nil then
self.callbacks.edit( self )
end
end
end
end
@@ -1631,18 +1588,16 @@ function ColorBarHue:update()
end
function ColorBarHue:draw()
local oldValue = self.value
_, self.value = RL.GuiColorBarHue( self.bounds, self.text, self.value )
local result, value = RL.GuiColorBarHue( self.bounds, self.text, self.value )
if self.value ~= oldValue then
if not self._gui:clickedInBounds( self.bounds ) then
self.value = oldValue
return
end
self._gui:checkScrolling()
if 0 < result then
if self._gui:clickedInBounds( self.bounds ) then
self._gui:checkScrolling()
self.value = value
if self.callbacks.edit ~= nil then
self.callbacks.edit( self )
if self.callbacks.edit ~= nil then
self.callbacks.edit( self )
end
end
end
end
@@ -1666,7 +1621,7 @@ function GuiScrollBar:new( bounds, value, minValue, maxValue, callbacks, styles,
object.value = value
object.minValue = minValue
object.maxValue = maxValue
object.callbacks = callbacks -- edit.
object.callbacks = callbacks -- scroll.
object.visible = true
object.disabled = false
@@ -1681,19 +1636,17 @@ function GuiScrollBar:update()
end
function GuiScrollBar:draw()
local oldValue = self.value
-- Note. Scrollbar style should be determined by the control that uses it.
self.value = RL.GuiScrollBar( self.bounds, self.value, self.minValue, self.maxValue )
local value = RL.GuiScrollBar( self.bounds, self.value, self.minValue, self.maxValue )
if self.value ~= oldValue then
if not self._gui:clickedInBounds( self.bounds ) then
self.value = oldValue
return
end
self._gui:checkScrolling()
if self.value ~= value then
if self._gui:clickedInBounds( self.bounds ) then
self._gui:checkScrolling()
self.value = value
if self.callbacks.edit ~= nil then
self.callbacks.edit( self )
if self.callbacks.scroll ~= nil then
self.callbacks.scroll( self )
end
end
end
end