diff --git a/spec/System/TestItemListControl_spec.lua b/spec/System/TestItemListControl_spec.lua index 2d690a6eb8..9edad94921 100644 --- a/spec/System/TestItemListControl_spec.lua +++ b/spec/System/TestItemListControl_spec.lua @@ -176,6 +176,33 @@ describe("ItemListControl", function() assert.are.same({ }, itemsTab.items) end) + it("requires confirmation before deleting unused items", function() + local control, itemsTab = newItemListControl() + local onConfirm + local deleted = false + itemsTab.GetEquippedSlotForItem = function() + return nil + end + itemsTab.DeleteItem = function() + deleted = true + end + itemsTab.build.treeTab.specList = { } + main.OpenConfirmPopup = function(_, title, message, confirmLabel, callback) + assert.are.equal("Delete Unused", title) + assert.are.equal("Are you sure you want to delete all unused items in this build?", message) + assert.are.equal("Delete", confirmLabel) + onConfirm = callback + end + + control.controls.deleteUnused.onClick() + + assert.is_false(deleted) + + onConfirm() + + assert.is_true(deleted) + end) + it("releases focus after opening an item with a double click", function() local control, itemsTab = newItemListControl() local item = new("Item"):Item([[ diff --git a/src/Classes/ItemListControl.lua b/src/Classes/ItemListControl.lua index ee50d6371b..fe6b37c39e 100644 --- a/src/Classes/ItemListControl.lua +++ b/src/Classes/ItemListControl.lua @@ -23,7 +23,7 @@ function ItemListClass:ItemListControl(anchor, rect, itemsTab, forceTooltip) itemsTab:SortItemList() self:UpdateList() end) - self.controls.deleteUnused = new("ButtonControl"):ButtonControl({"LEFT",self.controls.sort,"RIGHT"}, {4, 0, 84, 18}, "Del Unused", function() + local function deleteUnused() local delList = {} for _, itemId in pairs(itemsTab.itemOrderList) do if not itemsTab:GetEquippedSlotForItem(itemsTab.items[itemId]) and not self:FindEquippedAbyssJewel(itemId, false) and not self:FindSocketedJewel(itemId, false) then @@ -42,6 +42,9 @@ function ItemListClass:ItemListControl(anchor, rect, itemsTab, forceTooltip) itemsTab:AddUndoState() itemsTab.build.buildFlag = true self:UpdateList() + end + self.controls.deleteUnused = new("ButtonControl"):ButtonControl({"LEFT",self.controls.sort,"RIGHT"}, {4, 0, 84, 18}, "Del Unused", function() + main:OpenConfirmPopup("Delete Unused", "Are you sure you want to delete all unused items in this build?", "Delete", deleteUnused) end) self.controls.deleteUnused.enabled = function() return #self.list > 0