improve miniwindow moving
This commit is contained in:
parent
e91f822f62
commit
e7334566a2
1
TODO
1
TODO
|
@ -76,3 +76,4 @@ terminate rework of ui events propagation (for Key events)
|
||||||
* lua engine
|
* lua engine
|
||||||
make possible to bind non LuaObject derived classes on lua engine (for usage with Point,Rect,Color,Size)
|
make possible to bind non LuaObject derived classes on lua engine (for usage with Point,Rect,Color,Size)
|
||||||
review usage of x,y/width,height in lua instead of point/size
|
review usage of x,y/width,height in lua instead of point/size
|
||||||
|
calling UIWidget.getMarginTop(nil) makes client crashes
|
||||||
|
|
|
@ -66,7 +66,7 @@ MiniWindow < UIMiniWindow
|
||||||
margin-bottom: 3
|
margin-bottom: 3
|
||||||
pixels-scroll: true
|
pixels-scroll: true
|
||||||
|
|
||||||
$disabled:
|
$!on:
|
||||||
width: 0
|
width: 0
|
||||||
|
|
||||||
ResizeBorder
|
ResizeBorder
|
||||||
|
|
|
@ -27,6 +27,48 @@ function UIMiniWindow:onDragEnter(mousePos)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function UIMiniWindow:onDragMove(mousePos, mouseMoved)
|
||||||
|
local oldMousePosY = mousePos.y - mouseMoved.y
|
||||||
|
local children = rootWidget:recursiveGetChildrenByPos(mousePos)
|
||||||
|
local overAnyWidget = false
|
||||||
|
for i=1,#children do
|
||||||
|
local child = children[i]
|
||||||
|
if child:getParent():getClassName() == 'UIMiniWindowContainer' then
|
||||||
|
overAnyWidget = true
|
||||||
|
|
||||||
|
local childCenterY = child:getY() + child:getHeight() / 2
|
||||||
|
if child == self.movedWidget and mousePos.y < childCenterY and oldMousePosY < childCenterY then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
if self.movedWidget then
|
||||||
|
self.widgetSetMargin(self.movedWidget, self.widgetGetMargin(self.movedWidget) - 10)
|
||||||
|
end
|
||||||
|
|
||||||
|
if mousePos.y < childCenterY then
|
||||||
|
self.widgetSetMargin = child.setMarginTop
|
||||||
|
self.widgetGetMargin = child.getMarginTop
|
||||||
|
self.movedIndex = 0
|
||||||
|
else
|
||||||
|
self.widgetSetMargin = child.setMarginBottom
|
||||||
|
self.widgetGetMargin = child.getMarginBottom
|
||||||
|
self.movedIndex = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
self.widgetSetMargin(child, self.widgetGetMargin(child) + 10)
|
||||||
|
self.movedWidget = child
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not overAnyWidget and self.movedWidget then
|
||||||
|
self.widgetSetMargin(self.movedWidget, self.widgetGetMargin(self.movedWidget) - 10)
|
||||||
|
self.movedWidget = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
return UIWindow.onDragMove(self, mousePos, mouseMoved)
|
||||||
|
end
|
||||||
|
|
||||||
function UIMiniWindow:onMousePress()
|
function UIMiniWindow:onMousePress()
|
||||||
local parent = self:getParent()
|
local parent = self:getParent()
|
||||||
if not parent then return false end
|
if not parent then return false end
|
||||||
|
@ -37,7 +79,13 @@ function UIMiniWindow:onMousePress()
|
||||||
end
|
end
|
||||||
|
|
||||||
function UIMiniWindow:onDragLeave(droppedWidget, mousePos)
|
function UIMiniWindow:onDragLeave(droppedWidget, mousePos)
|
||||||
-- TODO: drop on other interfaces
|
if self.movedWidget then
|
||||||
|
self.widgetSetMargin(self.movedWidget, self.widgetGetMargin(self.movedWidget) - 10)
|
||||||
|
self.movedWidget = nil
|
||||||
|
self.widgetSetMargin = nil
|
||||||
|
self.widgetGetMargin = nil
|
||||||
|
self.movedIndex = nil
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function UIMiniWindow:onFocusChange(focused)
|
function UIMiniWindow:onFocusChange(focused)
|
||||||
|
|
|
@ -9,7 +9,20 @@ end
|
||||||
|
|
||||||
function UIMiniWindowContainer:onDrop(widget, mousePos)
|
function UIMiniWindowContainer:onDrop(widget, mousePos)
|
||||||
if widget:getClassName() == 'UIMiniWindow' then
|
if widget:getClassName() == 'UIMiniWindow' then
|
||||||
widget:setParent(self)
|
local oldParent = widget:getParent()
|
||||||
|
if oldParent == self then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
oldParent:removeChild(widget)
|
||||||
|
|
||||||
|
if widget.movedWidget then
|
||||||
|
local index = self:getChildIndex(widget.movedWidget)
|
||||||
|
self:insertChild(index + widget.movedIndex, widget)
|
||||||
|
else
|
||||||
|
self:addChild(widget)
|
||||||
|
end
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue