otclient-redemption/modules/corelib/ui/uiwindow.lua

56 lines
1.3 KiB
Lua

-- @docclass
UIWindow = extends(UIWidget, 'UIWindow')
function UIWindow.create()
local window = UIWindow.internalCreate()
window:setTextAlign(AlignTopCenter)
window:setDraggable(true)
window:setAutoFocusPolicy(AutoFocusFirst)
window.hotkeyBlock = false
return window
end
function UIWindow:onKeyPress(keyCode, keyboardModifiers)
if keyboardModifiers == KeyboardNoModifier then
if keyCode == KeyEnter then
signalcall(self.onEnter, self)
elseif keyCode == KeyEscape then
signalcall(self.onEscape, self)
end
end
end
function UIWindow:onFocusChange(focused)
if focused then
self:raise()
end
end
function UIWindow:onDragEnter(mousePos)
self:breakAnchors()
self.movingReference = {
x = mousePos.x - self:getX(),
y = mousePos.y - self:getY()
}
return true
end
function UIWindow:onDragLeave(droppedWidget, mousePos)
-- TODO: auto detect and reconnect anchors
end
function UIWindow:onDragMove(mousePos, mouseMoved)
local pos = {
x = mousePos.x - self.movingReference.x,
y = mousePos.y - self.movingReference.y
}
self:setPosition(pos)
self:bindRectToParent()
end
function UIWindow:onDestroy()
if self.hotkeyBlock then
self.hotkeyBlock.release()
self.hotkeyBlock = false
end
end