From f56e0e63595b33560c1968cdbd8a30a54bd5e161 Mon Sep 17 00:00:00 2001 From: Steven Jackson Date: Fri, 10 Oct 2014 00:55:40 -0500 Subject: [PATCH] fixed sorting --- Interface/AddOns/SVUI/packages/bag/SVBag.lua | 91 +++++++++++++++++++- .../AddOns/SVUI/packages/bag/tools/sorting.lua | 2 +- 2 files changed, 90 insertions(+), 3 deletions(-) diff --git a/Interface/AddOns/SVUI/packages/bag/SVBag.lua b/Interface/AddOns/SVUI/packages/bag/SVBag.lua index c553710..8a1e8cd 100644 --- a/Interface/AddOns/SVUI/packages/bag/SVBag.lua +++ b/Interface/AddOns/SVUI/packages/bag/SVBag.lua @@ -297,6 +297,15 @@ local BagMenu_OnLeave = function(self) end end +local BAG_FILTER_LABELS = _G.BAG_FILTER_LABELS; + +local BagMenu_OnClick = function(self) + if IsShiftKeyDown() then + print("Unavailable until WoD") + --SetBagSlotFlag(self.id, LE_BAG_FILTER_FLAG_EQUIPMENT, true) + end +end + local ContainerFrame_UpdateCooldowns = function(self) for bagID, bag in ipairs(self.Bags) do for slotID = 1, GetContainerNumSlots(bagID)do @@ -395,12 +404,17 @@ local ContainerFrame_UpdateLayout = function(self) bagSlot.iconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9) bagSlot:HookScript("OnEnter", BagMenu_OnEnter) - bagSlot:HookScript("OnLeave", BagMenu_OnLeave) + bagSlot:HookScript("OnLeave", BagMenu_OnLeave) + + if(not bagSlot.tooltipText) then + bagSlot.tooltipText = "" + end if(isBank) then bagSlot:SetID(bagID) bagSlot.id = bagID; else + bagSlot:HookScript("OnClick", BagMenu_OnClick) bagSlot.id = (bagID + 1); end @@ -532,6 +546,79 @@ local ContainerFrame_UpdateLayout = function(self) end end end + else + local bag; + local bagName = ("%sBag%d"):format(containerName, 1) + + if not self.Bags[1] then + bag = CreateFrame("Frame", bagName, self); + bag:SetID(1); + bag.numSlots = numSlots; + bag.SlotUpdate = SlotUpdate; + bag.RefreshSlots = RefreshSlots; + self.Bags[1] = bag + else + bag = self.Bags[1] + end + + bag.bagFamily = false; + + for slotID = 1, 98 do + local slot; + totalSlots = totalSlots + 1; + + if not bag[slotID] then + local slotName = ("%sSlot%d"):format(bagName, slotID) + local newTexName = ("%sNewItemTexture"):format(slotName) + local iconName = ("%sIconTexture"):format(slotName) + local cdName = ("%sCooldown"):format(slotName) + + slot = CreateFrame("CheckButton", slotName, bag, template); + slot:SetNormalTexture(nil); + slot:SetCheckedTexture(nil); + slot:SetSlotTemplate(true, 2, 0, 0, true); + + if(_G[newTexName]) then + _G[newTexName]:Hide() + end + + slot.iconTexture = _G[iconName]; + slot.iconTexture:FillInner(slot); + slot.iconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9); + slot.cooldown = _G[cdName]; + + SV.Timers:AddCooldown(slot.cooldown) + + bag[slotID] = slot + else + slot = bag[slotID] + end + + slot:SetID(slotID); + slot:Size(buttonSize); + bag:SlotUpdate(slotID); + + if slot:GetPoint() then + slot:ClearAllPoints(); + end + + if lastButton then + if((totalSlots - 1) % numContainerColumns == 0) then + slot:Point("TOP", lastRowButton, "BOTTOM", 0, -buttonSpacing); + numContainerRows = numContainerRows + 1; + lastRowButton = slot; + else + slot:Point("LEFT", lastButton, "RIGHT", buttonSpacing, 0); + end + else + slot:Point("TOPLEFT", self.holderFrame, "TOPLEFT"); + numContainerRows = numContainerRows + 1; + lastRowButton = slot; + end + + lastButton = slot; + end + end self:Size(containerWidth, (((buttonSize + buttonSpacing) * numContainerRows) - buttonSpacing) + self.topOffset + self.bottomOffset); @@ -1224,7 +1311,7 @@ do frame.sortButton.ttText = L["Sort Bags"] frame.sortButton:SetScript("OnEnter", Tooltip_Show) frame.sortButton:SetScript("OnLeave", Tooltip_Hide) - local Sort_OnClick = (SV.GameVersion >= 60000) and BankFrame_AutoSortButtonOnClick or MOD:RunSortingProcess(MOD.Sort, "bank") + local Sort_OnClick = (SV.GameVersion >= 60000) and SortBankBags or MOD:RunSortingProcess(MOD.Sort, "bank") frame.sortButton:SetScript("OnClick", Sort_OnClick) frame.stackButton = CreateFrame("Button", nil, frame) diff --git a/Interface/AddOns/SVUI/packages/bag/tools/sorting.lua b/Interface/AddOns/SVUI/packages/bag/tools/sorting.lua index be4c4d4..56c243f 100644 --- a/Interface/AddOns/SVUI/packages/bag/tools/sorting.lua +++ b/Interface/AddOns/SVUI/packages/bag/tools/sorting.lua @@ -588,7 +588,7 @@ do for _, bag, slot in IterateBagsForSorting(bags, true, "withdraw") do local sourceSlot = (bag*100) + slot local itemID = sortingCache[2][sourceSlot] - if itemID and targetItems[itemID] and (canMove == true or canMove(itemID, bag, slot)) then + if itemID and targetItems[itemID] and (canMove == true or (type(canMove) == "function" and canMove(itemID, bag, slot))) then for i = #targetSlots, 1, -1 do local targetedSlot = targetSlots[i] if sortingCache[2][sourceSlot] and sortingCache[2][targetedSlot] == itemID and targetedSlot ~= sourceSlot and not (sortingCache[4][targetedSlot] == sortingCache[5][targetedSlot]) and not sourceUsed[targetedSlot] then -- 1.7.9.5