tibia-client/modules/corelib/widgets/uisplitter.lua

82 lines
2.2 KiB
Lua
Raw Normal View History

UISplitter = extends(UIWidget)
function UISplitter.create()
local splitter = UISplitter.internalCreate()
splitter:setFocusable(false)
2012-03-26 20:33:00 +02:00
splitter.relativeMargin = 'bottom'
return splitter
end
function UISplitter:onHoverChange(hovered)
if hovered then
if Mouse.isCursorChanged() or Mouse.isPressed() then return end
if self:getWidth() > self:getHeight() then
Mouse.setVerticalCursor()
self.vertical = true
else
Mouse.setHorizontalCursor()
self.vertical = false
end
self.hovering = true
2012-03-26 20:33:00 +02:00
if not self:isPressed() then
Effects.fadeIn(self)
end
else
if not self:isPressed() and self.hovering then
2012-03-26 20:33:00 +02:00
Mouse.restoreCursor()
Effects.fadeOut(self)
self.hovering = false
2012-03-26 20:33:00 +02:00
end
end
end
function UISplitter:onMouseMove(mousePos, mouseMoved)
if self:isPressed() then
2012-03-26 20:33:00 +02:00
--local currentmargin, newmargin, delta
if self.vertical then
2012-03-26 20:33:00 +02:00
local delta = mousePos.y - self:getY() - self:getHeight()/2
2012-03-23 04:06:00 +01:00
local newMargin = self:canUpdateMargin(self:getMarginBottom() - delta)
local currentMargin = self:getMarginBottom()
2012-03-23 04:06:00 +01:00
if newMargin ~= currentMargin then
self.newMargin = newMargin
if not self.event or self.event:isExecuted() then
self.event = addEvent(function()
self:setMarginBottom(self.newMargin)
end)
end
end
else
2012-03-26 20:33:00 +02:00
local delta = mousePos.x - self:getX() - self:getWidth()/2
local newMargin = self:canUpdateMargin(self:getMarginRight() - delta)
local currentMargin = self:getMarginRight()
2012-03-26 20:33:00 +02:00
if newMargin ~= currentMargin then
self.newMargin = newMargin
if not self.event or self.event:isExecuted() then
self.event = addEvent(function()
self:setMarginRight(self.newMargin)
end)
end
end
end
return true
end
end
function UISplitter:onMouseRelease(mousePos, mouseButton)
if not self:isHovered() then
Mouse.restoreCursor()
2012-03-26 20:33:00 +02:00
Effects.fadeOut(self)
self.hovering = false
end
end
function UISplitter:onStyleApply(styleName, styleNode)
2012-03-26 20:33:00 +02:00
if styleNode['relative-margin'] then
self.relativeMargin = styleNode['relative-margin']
end
end
2012-03-23 04:06:00 +01:00
function UISplitter:canUpdateMargin(newMargin)
return newMargin
end