bags: third-party sort addons rebind existing buttons

pfUI's built-in sorter (modules/bags.lua) always creates the sort
buttons on the right/left bag frames now, so the third-party
RegisterBagSort path's "if not pfUI.bag.right.sort" guard would skip
button-creation entirely — yet still set pfUI.thirdparty.bagsort to
the registering addon's name. Net effect: user installed SortBags or
MrPlow, our internal sort runs anyway. Silent override of user intent.

Strip the dead button-creation paths; rebind the existing buttons'
OnClick + OnEnter to the registered third-party functions instead.
Third-party addons now actually fire when the user clicks. -53 lines.
This commit is contained in:
Brues
2026-05-27 23:29:56 -05:00
parent 9a618e4709
commit 3ef78044fb
+20 -73
View File
@@ -108,87 +108,34 @@ pfUI:RegisterModule("thirdparty", function()
do -- bag sort addon
pfUI.thirdparty.bagsort = nil
-- Third-party sort addons (SortBags, MrPlow, etc.) override pfUI's built-
-- in sorter by rebinding the existing pfUI.bag.{right,left}.sort buttons
-- created in modules/bags.lua. First-come-first-served — if multiple
-- third-party sorters are installed, the first to register wins.
function pfUI.thirdparty.RegisterBagSort(name, bag, bagtooltip, bank, banktooltip)
-- skip on certain conditions
if pfUI.thirdparty.bagsort then return end
if not pfUI.bag or not pfUI.bag.right then return end
if not pfUI.bag or not pfUI.bag.right or not pfUI.bag.right.sort then return end
pfUI.thirdparty.bagsort = name
local rawborder, default_border = GetBorderSize("bags")
-- Rebind bag (right) button
local rb = pfUI.bag.right.sort
rb:SetScript("OnClick", bag)
rb:SetScript("OnEnter", function()
rb.backdrop:SetBackdropBorderColor(1,1,.25,1)
rb.texture:SetVertexColor(1,1,.25,1)
if bagtooltip then bagtooltip() end
end)
-- draw the button
if not pfUI.bag.right.sort then
pfUI.bag.right.sort = CreateFrame("Button", "pfBagSlotSort", UIParent)
pfUI.bag.right.sort:SetParent(pfUI.bag.right)
pfUI.bag.right.sort:SetPoint("TOPRIGHT", pfUI.bag.right.keys, "TOPLEFT", -default_border*3, 0)
CreateBackdrop(pfUI.bag.right.sort, default_border)
pfUI.bag.right.sort:SetHeight(12)
pfUI.bag.right.sort:SetWidth(12)
pfUI.bag.right.sort:SetTextColor(1,1,.25,1)
pfUI.bag.right.sort:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE")
pfUI.bag.right.sort.texture = pfUI.bag.right.sort:CreateTexture("pfBagArrowUp")
pfUI.bag.right.sort.texture:SetTexture(pfUI.media["img:sort"])
pfUI.bag.right.sort.texture:ClearAllPoints()
pfUI.bag.right.sort.texture:SetPoint("TOPLEFT", pfUI.bag.right.sort, "TOPLEFT", 2, -2)
pfUI.bag.right.sort.texture:SetPoint("BOTTOMRIGHT", pfUI.bag.right.sort, "BOTTOMRIGHT", -2, 2)
pfUI.bag.right.sort.texture:SetVertexColor(.25,.25,.25,1)
pfUI.bag.right.sort:SetScript("OnClick", bag)
pfUI.bag.right.sort:SetScript("OnEnter", function ()
pfUI.bag.right.sort.backdrop:SetBackdropBorderColor(1,1,.25,1)
pfUI.bag.right.sort.texture:SetVertexColor(1,1,.25,1)
if bagtooltip then bagtooltip() end
end)
pfUI.bag.right.sort:SetScript("OnLeave", function ()
CreateBackdrop(pfUI.bag.right.sort)
pfUI.bag.right.sort.texture:SetVertexColor(.25,.25,.25,1)
if GameTooltip:IsOwned(this) then
GameTooltip:Hide()
end
end)
pfUI.bag.right.search:ClearAllPoints()
pfUI.bag.right.search:SetPoint("TOPLEFT", pfUI.bag.right, "TOPLEFT", default_border, -default_border)
pfUI.bag.right.search:SetPoint("TOPRIGHT", pfUI.bag.right.sort, "TOPLEFT", -default_border*3, -default_border)
end
-- draw the button
if not pfUI.bag.left.sort then
pfUI.bag.left.sort = CreateFrame("Button", "pfBankSlotSort", UIParent)
pfUI.bag.left.sort:SetParent(pfUI.bag.left)
pfUI.bag.left.sort:SetPoint("TOPRIGHT", pfUI.bag.left.bags, "TOPLEFT", -default_border*3, 0)
CreateBackdrop(pfUI.bag.left.sort, default_border)
pfUI.bag.left.sort:SetHeight(12)
pfUI.bag.left.sort:SetWidth(12)
pfUI.bag.left.sort:SetTextColor(1,1,.25,1)
pfUI.bag.left.sort:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE")
pfUI.bag.left.sort.texture = pfUI.bag.left.sort:CreateTexture("pfBagArrowUp")
pfUI.bag.left.sort.texture:SetTexture(pfUI.media["img:sort"])
pfUI.bag.left.sort.texture:ClearAllPoints()
pfUI.bag.left.sort.texture:SetPoint("TOPLEFT", pfUI.bag.left.sort, "TOPLEFT", 2, -2)
pfUI.bag.left.sort.texture:SetPoint("BOTTOMRIGHT", pfUI.bag.left.sort, "BOTTOMRIGHT", -2, 2)
pfUI.bag.left.sort.texture:SetVertexColor(.25,.25,.25,1)
pfUI.bag.left.sort:SetScript("OnClick", bank)
pfUI.bag.left.sort:SetScript("OnEnter", function ()
pfUI.bag.left.sort.backdrop:SetBackdropBorderColor(1,1,.25,1)
pfUI.bag.left.sort.texture:SetVertexColor(1,1,.25,1)
-- Rebind bank (left) button
if pfUI.bag.left and pfUI.bag.left.sort then
local lb = pfUI.bag.left.sort
lb:SetScript("OnClick", bank)
lb:SetScript("OnEnter", function()
lb.backdrop:SetBackdropBorderColor(1,1,.25,1)
lb.texture:SetVertexColor(1,1,.25,1)
if banktooltip then banktooltip() end
end)
pfUI.bag.left.sort:SetScript("OnLeave", function ()
CreateBackdrop(pfUI.bag.left.sort)
pfUI.bag.left.sort.texture:SetVertexColor(.25,.25,.25,1)
if GameTooltip:IsOwned(this) then
GameTooltip:Hide()
end
end)
end
end
end