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