Files
Guda-ClassicAPI/UI/BagHighlightFlyoutFix.lua
Dusk ed829235a3 Fix compact bag hover highlighting
Fix backpack and bag ownership highlighting in compact bagline mode without adding polling or scans.
2026-09-06 12:10:31 +02:00

66 lines
2.2 KiB
Lua

-- Guda ClassicAPI bag hover highlight fix
-- Keep bag ownership highlights in sync with the compact bag flyout state.
-- Lua 5.0 compatible.
local addon = Guda
if not addon then return end
if type(Guda_BagFrame_HighlightBagButton) ~= "function" then return end
if type(Guda_BagFrame_ClearBagButtonHighlight) ~= "function" then return end
local OriginalHighlightBagButton = Guda_BagFrame_HighlightBagButton
local OriginalClearBagButtonHighlight = Guda_BagFrame_ClearBagButtonHighlight
local function IsBaglineHidden()
if addon.Modules and addon.Modules.DB and addon.Modules.DB.GetSetting then
return addon.Modules.DB:GetSetting("hideBagline") and true or false
end
return false
end
local function GetVisibleBagFlyout()
local flyout = getglobal("Guda_BagFlyout")
if flyout and flyout:IsShown() then
return flyout
end
end
function Guda_BagFrame_HighlightBagButton(bagID)
-- Full bagline: preserve Guda's existing behavior exactly.
if not IsBaglineHidden() then
return OriginalHighlightBagButton(bagID)
end
local numericBagID = tonumber(bagID)
-- Compact mode: the bag-0 toolbar button represents the flyout itself.
-- Do not light it merely because an item belongs to the backpack while
-- that flyout is closed.
if numericBagID and numericBagID >= 0 and numericBagID <= 4 then
if not GetVisibleBagFlyout() then return end
local button
if numericBagID == 0 then
button = getglobal("Guda_BagFrame_Toolbar_BagSlot0")
else
button = getglobal("Guda_BagFlyout_Slot" .. numericBagID)
end
if button then button:LockHighlight() end
return
end
-- Keyring/special bag buttons are not part of the compact 1-4 flyout.
OriginalHighlightBagButton(bagID)
end
function Guda_BagFrame_ClearBagButtonHighlight()
OriginalClearBagButtonHighlight()
-- The original clear helper only knows about toolbar bag buttons.
-- Also clear any compact-flyout slot we may have highlighted above.
for bagID = 1, 4 do
local button = getglobal("Guda_BagFlyout_Slot" .. bagID)
if button then button:UnlockHighlight() end
end
end