You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.1 KiB

local SLE, T, E, L, V, P, G = unpack(select(2, ...))
local SB = SLE.Bags
local B = E.Bags
--GLOBALS: hooksecurefunc
local _G = _G
local Pr
-- Updating slot for deconstruct glow hide when item disappears
function SB:UpdateSlot(bagID, slotID)
if (self.Bags[bagID] and self.Bags[bagID].numSlots ~= GetContainerNumSlots(bagID)) or not self.Bags[bagID] or not self.Bags[bagID][slotID] then
return
end
local slot = self.Bags[bagID][slotID]
if not Pr then Pr = SLE.Professions end
if not Pr.DeconstructionReal then return end
if Pr.DeconstructionReal:IsShown() and Pr.DeconstructionReal.Bag == bagID and Pr.DeconstructionReal.Slot == slotID then
if not slot.hasItem then
GameTooltip_Hide()
Pr.DeconstructionReal:OnLeave()
end
end
end
function SB:HookBags(isBank)
for _, bagFrame in pairs(B.BagFrames) do
--Hooking slots for deconstruct. Bank is not allowed
if not bagFrame.SLE_DeconstructHooked and not isBank then
hooksecurefunc(bagFrame, 'UpdateSlot', SB.UpdateSlot)
bagFrame.SLE_UpdateHooked = true
end
end
end
function SB:Initialize()
if not SLE.initialized or not E.private.bags.enable then return end
function SB:ForUpdateAll()
SB.db = E.db.sle.bags
end
SB:ForUpdateAll()
--Applying stuff to already existing bags
self:HookBags()
hooksecurefunc(B, 'Layout', function(_, isBank)
SB:HookBags(isBank)
end)
--This table is for initial update of a frame, cause applying transparent trmplate breaks color borders
SB.InitialUpdates = {
Bank = false,
ReagentBank = false,
ReagentBankButton = false,
}
--Fix borders for bag frames
hooksecurefunc(B, 'OpenBank', function()
if not SB.InitialUpdates.Bank then --For bank, just update on first show
B:Layout(true)
SB.InitialUpdates.Bank = true
end
if not SB.InitialUpdates.ReagentBankButton then --For reagent bank, hook to toggle button and update layout when first clicked
_G.ElvUI_BankContainerFrame.reagentToggle:HookScript('OnClick', function()
if not SB.InitialUpdates.ReagentBank then
B:Layout(true)
SB.InitialUpdates.ReagentBank = true
end
end)
SB.InitialUpdates.ReagentBankButton = true
end
end)
end
SLE:RegisterModule(SB:GetName())