* implement UIScrollArea * rework console to allow scrolling * many core ui changes in the way.. so maybe we will have new bugs * fix in UIScrollBarmaster
parent
179e53bb77
commit
ccf55132a1
@ -1,15 +1,74 @@
|
|||||||
UIScrollArea = extends(UIWidget)
|
UIScrollArea = extends(UIWidget)
|
||||||
|
|
||||||
|
-- public functions
|
||||||
function UIScrollArea.create()
|
function UIScrollArea.create()
|
||||||
local scrollarea = UIScrollArea.internalCreate()
|
local scrollarea = UIScrollArea.internalCreate()
|
||||||
scrollarea:setClipping(true)
|
scrollarea:setClipping(true)
|
||||||
|
scrollarea.inverted = false
|
||||||
return scrollarea
|
return scrollarea
|
||||||
end
|
end
|
||||||
|
|
||||||
function UIScrollArea:onStyleApply(styleName, styleNode)
|
function UIScrollArea:onStyleApply(styleName, styleNode)
|
||||||
for name,value in pairs(styleNode) do
|
for name,value in pairs(styleNode) do
|
||||||
if name == 'horizontal-scrollbar' then
|
if name == 'vertical-scrollbar' then
|
||||||
|
addEvent(function()
|
||||||
|
self:setVerticalScrollBar(self:getParent():getChildById(value))
|
||||||
|
end)
|
||||||
|
elseif name == 'horizontal-scrollbar' then
|
||||||
|
addEvent(function()
|
||||||
|
self:setHorizontalScrollBar(self:getParent():getChildById(value))
|
||||||
|
end)
|
||||||
|
elseif name == 'inverted-scroll' then
|
||||||
|
self:setInverted(value)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function UIScrollArea:updateScrollBars()
|
||||||
|
local offset = { x = 0, y = 0 }
|
||||||
|
local scrollheight = math.max(self:getChildrenRect().height - self:getClippingRect().height, 0)
|
||||||
|
local scrollwidth = math.max(self:getChildrenRect().width - self:getClippingRect().width, 0)
|
||||||
|
|
||||||
|
local scrollbar = self.verticalScrollBar
|
||||||
|
if scrollbar then
|
||||||
|
if self.inverted then
|
||||||
|
scrollbar:setMinimum(-scrollheight)
|
||||||
|
else
|
||||||
|
scrollbar:setMaximum(scrollheight)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local scrollbar = self.horizontalScrollBar
|
||||||
|
if scrollbar then
|
||||||
|
if self.inverted then
|
||||||
|
scrollbar:setMinimum(-scrollwidth)
|
||||||
|
else
|
||||||
|
scrollbar:setMaximum(scrollwidth)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function UIScrollArea:setVerticalScrollBar(scrollbar)
|
||||||
|
self.verticalScrollBar = scrollbar
|
||||||
|
scrollbar:setMaximum(0)
|
||||||
|
self.verticalScrollBar.onValueChange = function(scrollbar, value)
|
||||||
|
local virtualOffset = self:getVirtualOffset()
|
||||||
|
if self.inverted then value = -value end
|
||||||
|
virtualOffset.y = value
|
||||||
|
self:setVirtualOffset(virtualOffset)
|
||||||
|
end
|
||||||
|
self:updateScrollBars()
|
||||||
|
end
|
||||||
|
|
||||||
|
function UIScrollArea:setHorizontalScrollBar(scrollbar)
|
||||||
|
self.horizontalScrollBar = scrollbar
|
||||||
|
self:updateScrollBars()
|
||||||
|
end
|
||||||
|
|
||||||
|
function UIScrollArea:setInverted(inverted)
|
||||||
|
self.inverted = inverted
|
||||||
|
end
|
||||||
|
|
||||||
|
function UIScrollArea:onLayoutUpdate()
|
||||||
|
self:updateScrollBars()
|
||||||
|
end
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
Panel < UIWidget
|
Panel < UIWidget
|
||||||
phantom: true
|
phantom: true
|
||||||
|
|
||||||
|
ScrollablePanel < UIScrollArea
|
||||||
|
phantom: true
|
||||||
|
|
||||||
FlatPanel < Panel
|
FlatPanel < Panel
|
||||||
image-source: /core_styles/styles/images/panel_flat.png
|
image-source: /core_styles/styles/images/panel_flat.png
|
||||||
image-border: 1
|
image-border: 1
|
||||||
|
Loading…
Reference in new issue