mirror of
https://github.com/ErikasKontenis/SabrehavenServer.git
synced 2025-10-15 15:04:53 +02:00
Resolve "Merge the best from 7.40 branch"
This commit is contained in:
78
SabrehavenOTClient/modules/corelib/ui/uitextedit.lua
Normal file
78
SabrehavenOTClient/modules/corelib/ui/uitextedit.lua
Normal file
@@ -0,0 +1,78 @@
|
||||
function UITextEdit:onStyleApply(styleName, styleNode)
|
||||
for name,value in pairs(styleNode) do
|
||||
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)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function UITextEdit:onMouseWheel(mousePos, mouseWheel)
|
||||
if self.verticalScrollBar and self:isMultiline() then
|
||||
if mouseWheel == MouseWheelUp then
|
||||
self.verticalScrollBar:decrement()
|
||||
else
|
||||
self.verticalScrollBar:increment()
|
||||
end
|
||||
return true
|
||||
elseif self.horizontalScrollBar then
|
||||
if mouseWheel == MouseWheelUp then
|
||||
self.horizontalScrollBar:increment()
|
||||
else
|
||||
self.horizontalScrollBar:decrement()
|
||||
end
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
function UITextEdit:onTextAreaUpdate(virtualOffset, virtualSize, totalSize)
|
||||
self:updateScrollBars()
|
||||
end
|
||||
|
||||
function UITextEdit:setVerticalScrollBar(scrollbar)
|
||||
self.verticalScrollBar = scrollbar
|
||||
self.verticalScrollBar.onValueChange = function(scrollbar, value)
|
||||
local virtualOffset = self:getTextVirtualOffset()
|
||||
virtualOffset.y = value
|
||||
self:setTextVirtualOffset(virtualOffset)
|
||||
end
|
||||
self:updateScrollBars()
|
||||
end
|
||||
|
||||
function UITextEdit:setHorizontalScrollBar(scrollbar)
|
||||
self.horizontalScrollBar = scrollbar
|
||||
self.horizontalScrollBar.onValueChange = function(scrollbar, value)
|
||||
local virtualOffset = self:getTextVirtualOffset()
|
||||
virtualOffset.x = value
|
||||
self:setTextVirtualOffset(virtualOffset)
|
||||
end
|
||||
self:updateScrollBars()
|
||||
end
|
||||
|
||||
function UITextEdit:updateScrollBars()
|
||||
local scrollSize = self:getTextTotalSize()
|
||||
local scrollWidth = math.max(scrollSize.width - self:getTextVirtualSize().width, 0)
|
||||
local scrollHeight = math.max(scrollSize.height - self:getTextVirtualSize().height, 0)
|
||||
|
||||
local scrollbar = self.verticalScrollBar
|
||||
if scrollbar then
|
||||
scrollbar:setMinimum(0)
|
||||
scrollbar:setMaximum(scrollHeight)
|
||||
scrollbar:setValue(self:getTextVirtualOffset().y)
|
||||
end
|
||||
|
||||
local scrollbar = self.horizontalScrollBar
|
||||
if scrollbar then
|
||||
scrollbar:setMinimum(0)
|
||||
scrollbar:setMaximum(scrollWidth)
|
||||
scrollbar:setValue(self:getTextVirtualOffset().x)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-- todo: ontext change, focus to cursor
|
Reference in New Issue
Block a user