diff --git a/modules/corelib/ui/uidragicon.lua b/modules/corelib/ui/uidragicon.lua index 4e1847e854..df1d0e2389 100644 --- a/modules/corelib/ui/uidragicon.lua +++ b/modules/corelib/ui/uidragicon.lua @@ -3,21 +3,32 @@ local uiIcon = nil function UIDragIcon:display(item) if modules.client_options.getOption('showDragIcon') then - uiIcon = g_ui.createWidget('UIDragIcon', rootWidget) + if uiIcon == nil then + uiIcon = g_ui.createWidget('UIDragIcon', rootWidget) + uiIcon:setVirtual(true) + uiIcon:setShowCount(false) + end + uiIcon:setItem(item) - uiIcon:setVirtual(true) - uiIcon:setShowCount(false) uiIcon:show() + + connect(rootWidget, { onMouseMove = onMouseMove }) end - - connect(rootWidget, { onMouseMove = onMouseMove }) end function UIDragIcon:hide() if uiIcon ~= nil then uiIcon:hide() + disconnect(rootWidget, { onMouseMove = onMouseMove }) + end +end + +function UIDragIcon:destroy() + if uiIcon ~= nil then + disconnect(rootWidget, { onMouseMove = onMouseMove }) + uiIcon:destroy() + uiIcon = nil end - disconnect(rootWidget, { onMouseMove = onMouseMove }) end function onMouseMove(self, mousePos, mouseMoved) diff --git a/modules/game_interface/widgets/uigamemap.lua b/modules/game_interface/widgets/uigamemap.lua index 9a0c4cf531..35bfc29b52 100644 --- a/modules/game_interface/widgets/uigamemap.lua +++ b/modules/game_interface/widgets/uigamemap.lua @@ -22,7 +22,7 @@ function UIGameMap:onDragEnter(mousePos) return false end - if not thing:isNotMoveable() then + if thing:isItem() and not thing:isNotMoveable() then UIDragIcon:display(thing) end diff --git a/modules/game_interface/widgets/uiitem.lua b/modules/game_interface/widgets/uiitem.lua index c10c8b1324..a7f4f8c4b0 100644 --- a/modules/game_interface/widgets/uiitem.lua +++ b/modules/game_interface/widgets/uiitem.lua @@ -39,7 +39,7 @@ function UIItem:onDrop(widget, mousePos) return false end - if self.isVirtual() then + if self:isVirtual() then UIDragIcon:hide() end @@ -83,7 +83,7 @@ function UIItem:onDestroy() self.hoveredWho:setBorderWidth(0) end - if self.isVirtual() then + if self:isVirtual() then UIDragIcon:hide() end