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
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())
|
|
|