uitextedit.lua

main 78 lines · 2.3 KB Raw
Alex Alex Commit Client Upload Part 2 19/10/2026 00:06
1function UITextEdit:onStyleApply(styleName, styleNode)
2 for name,value in pairs(styleNode) do
3 if name == 'vertical-scrollbar' then
4 addEvent(function()
5 self:setVerticalScrollBar(self:getParent():getChildById(value))
6 end)
7 elseif name == 'horizontal-scrollbar' then
8 addEvent(function()
9 self:setHorizontalScrollBar(self:getParent():getChildById(value))
10 end)
11 end
12 end
13end
14
15function UITextEdit:onMouseWheel(mousePos, mouseWheel)
16 if self.verticalScrollBar and self:isMultiline() then
17 if mouseWheel == MouseWheelUp then
18 self.verticalScrollBar:decrement()
19 else
20 self.verticalScrollBar:increment()
21 end
22 return true
23 elseif self.horizontalScrollBar then
24 if mouseWheel == MouseWheelUp then
25 self.horizontalScrollBar:increment()
26 else
27 self.horizontalScrollBar:decrement()
28 end
29 return true
30 end
31end
32
33function UITextEdit:onTextAreaUpdate(virtualOffset, virtualSize, totalSize)
34 self:updateScrollBars()
35end
36
37function UITextEdit:setVerticalScrollBar(scrollbar)
38 self.verticalScrollBar = scrollbar
39 self.verticalScrollBar.onValueChange = function(scrollbar, value)
40 local virtualOffset = self:getTextVirtualOffset()
41 virtualOffset.y = value
42 self:setTextVirtualOffset(virtualOffset)
43 end
44 self:updateScrollBars()
45end
46
47function UITextEdit:setHorizontalScrollBar(scrollbar)
48 self.horizontalScrollBar = scrollbar
49 self.horizontalScrollBar.onValueChange = function(scrollbar, value)
50 local virtualOffset = self:getTextVirtualOffset()
51 virtualOffset.x = value
52 self:setTextVirtualOffset(virtualOffset)
53 end
54 self:updateScrollBars()
55end
56
57function UITextEdit:updateScrollBars()
58 local scrollSize = self:getTextTotalSize()
59 local scrollWidth = math.max(scrollSize.width - self:getTextVirtualSize().width, 0)
60 local scrollHeight = math.max(scrollSize.height - self:getTextVirtualSize().height, 0)
61
62 local scrollbar = self.verticalScrollBar
63 if scrollbar then
64 scrollbar:setMinimum(0)
65 scrollbar:setMaximum(scrollHeight)
66 scrollbar:setValue(self:getTextVirtualOffset().y)
67 end
68
69 local scrollbar = self.horizontalScrollBar
70 if scrollbar then
71 scrollbar:setMinimum(0)
72 scrollbar:setMaximum(scrollWidth)
73 scrollbar:setValue(self:getTextVirtualOffset().x)
74 end
75
76end
77
78-- todo: ontext change, focus to cursor
Top