From 1fa5f68c223568073a7bcfaae089bdf437a77dd3 Mon Sep 17 00:00:00 2001 From: Salikh Gurgenidze Date: Mon, 17 Nov 2025 19:18:04 +0400 Subject: [PATCH] fix: on hovering bag slot, bag item slots are highlighted --- UI/BagFrame.lua | 47 +++++++++++++++++++++++++++++++++++++++++++++++ UI/BagFrame.xml | 10 ++++++++++ 2 files changed, 57 insertions(+) diff --git a/UI/BagFrame.lua b/UI/BagFrame.lua index cd4f7c0..1eaddc6 100644 --- a/UI/BagFrame.lua +++ b/UI/BagFrame.lua @@ -1469,6 +1469,53 @@ function Guda_BagSlot_OnEnter(button, bagID) GameTooltip:Show() end +-- Highlight all item slots belonging to a specific bag by dimming others +function Guda_BagFrame_HighlightBagSlots(bagID) + local itemContainer = getglobal("Guda_BagFrame_ItemContainer") + if not itemContainer then + addon:Debug("HighlightBagSlots: itemContainer not found") + return + end + + local highlightCount = 0 + local dimCount = 0 + + -- Iterate through all children (item buttons) + local children = { itemContainer:GetChildren() } + for _, button in ipairs(children) do + -- Check if this is an item button + if button.hasItem ~= nil and button:IsShown() then + if button.bagID == bagID then + -- This button belongs to the hovered bag - keep it bright + button:SetAlpha(1.0) + highlightCount = highlightCount + 1 + else + -- This button belongs to a different bag - dim it + button:SetAlpha(0.25) + dimCount = dimCount + 1 + end + end + end + + addon:Debug(string.format("HighlightBagSlots: Highlighted %d slots, dimmed %d slots for bagID %d", highlightCount, dimCount, bagID)) +end + +-- Clear all highlighting by restoring full opacity to all slots +function Guda_BagFrame_ClearHighlightedSlots() + local itemContainer = getglobal("Guda_BagFrame_ItemContainer") + if not itemContainer then return end + + -- Iterate through all children (item buttons) + local children = { itemContainer:GetChildren() } + for _, button in ipairs(children) do + -- Check if this is an item button + if button.hasItem ~= nil and button:IsShown() then + -- Restore full opacity + button:SetAlpha(1.0) + end + end +end + -- Initialize function BagFrame:Initialize() -- Hook default bag functions diff --git a/UI/BagFrame.xml b/UI/BagFrame.xml index 26f1db2..3f2354c 100644 --- a/UI/BagFrame.xml +++ b/UI/BagFrame.xml @@ -294,9 +294,11 @@ Guda_BagSlot_OnEnter(this, 1) + Guda_BagFrame_HighlightBagSlots(1) GameTooltip:Hide() + Guda_BagFrame_ClearHighlightedSlots() Guda_BagSlot_OnEvent(this, event, arg1) @@ -325,9 +327,11 @@ Guda_BagSlot_OnEnter(this, 2) + Guda_BagFrame_HighlightBagSlots(2) GameTooltip:Hide() + Guda_BagFrame_ClearHighlightedSlots() Guda_BagSlot_OnEvent(this, event, arg1) @@ -356,9 +360,11 @@ Guda_BagSlot_OnEnter(this, 3) + Guda_BagFrame_HighlightBagSlots(3) GameTooltip:Hide() + Guda_BagFrame_ClearHighlightedSlots() Guda_BagSlot_OnEvent(this, event, arg1) @@ -387,9 +393,11 @@ Guda_BagSlot_OnEnter(this, 4) + Guda_BagFrame_HighlightBagSlots(4) GameTooltip:Hide() + Guda_BagFrame_ClearHighlightedSlots() Guda_BagSlot_OnEvent(this, event, arg1) @@ -437,9 +445,11 @@ GameTooltip:SetOwner(this, "ANCHOR_TOP") GameTooltip:SetText("Toggle Keyring") GameTooltip:Show() + Guda_BagFrame_HighlightBagSlots(-2) GameTooltip:Hide() + Guda_BagFrame_ClearHighlightedSlots()