From cf9de34a5dcb8f9e634bbc79a14be6b27376eb91 Mon Sep 17 00:00:00 2001 From: Salikh Gurgenidze Date: Wed, 24 Dec 2025 23:19:35 +0400 Subject: [PATCH] fix: key tooltip --- UI/BagFrame.lua | 32 +------------------------------- UI/ItemButton.lua | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 31 deletions(-) diff --git a/UI/BagFrame.lua b/UI/BagFrame.lua index bf1de8f..7a1222d 100644 --- a/UI/BagFrame.lua +++ b/UI/BagFrame.lua @@ -641,12 +641,11 @@ function BagFrame:DisplayItemsByCategory(bagData, isOtherChar, charName) -- Update Y for bottom sections local y = currentY + rowMaxHeight - -- Special sections at bottom (Hearthstone, Mount, Tools, Keyring, Empty) + -- Special sections at bottom (Hearthstone, Mount, Tools, Empty) local bottomSections = { { name = "Home", items = specialItems.Hearthstone }, { name = "Mounts", items = specialItems.Mount }, { name = "Tools", items = specialItems.Tools }, - { name = "Keyring", items = categories["Keyring"] or {} }, { name = "Empty", items = {} } } @@ -672,12 +671,6 @@ function BagFrame:DisplayItemsByCategory(bagData, isOtherChar, charName) local numItems = table.getn(items) if sec.name == "Empty" then numItems = (totalFreeSlots > 0) and 1 or 0 - elseif sec.name == "Keyring" then - if showKeyring and not hiddenBags[-2] then - numItems = addon.Modules.Utils:GetBagSlotCount(-2) - else - numItems = 0 - end end if numItems > 0 then -- Sort Tools (Hearthstone/Mounts don't usually need it but good for consistency) @@ -738,29 +731,6 @@ function BagFrame:DisplayItemsByCategory(bagData, isOtherChar, charName) -- Ensure it's not actually read-only for drop behavior (it should still receive clicks/drops) button.isReadOnly = false button.inUse = true - elseif sec.name == "Keyring" then - local bagID = -2 - local bagParent = self:GetBagParent(bagID) - local bag = bagData[bagID] - for slot = 1, numItems do - local itemData = bag and bag.slots and bag.slots[slot] or nil - local button = Guda_GetItemButton(bagParent) - button:SetParent(bagParent) - button:SetWidth(buttonSize) - button:SetHeight(buttonSize) - button:ClearAllPoints() - button:SetPoint("TOPLEFT", itemContainer, "TOPLEFT", x + currentBottomX + (sCol * (buttonSize + spacing)), itemY - (sRow * (buttonSize + spacing))) - button:Show() - - Guda_ItemButton_SetItem(button, bagID, slot, itemData, false, isOtherChar and charName or nil, self:PassesSearchFilter(itemData), isOtherChar) - button.inUse = true - - sCol = sCol + 1 - if sCol >= blockCols then - sCol = 0 - sRow = sRow + 1 - end - end else for _, item in ipairs(items) do local bagParent = self:GetBagParent(item.bagID) diff --git a/UI/ItemButton.lua b/UI/ItemButton.lua index cdfad54..db454a7 100644 --- a/UI/ItemButton.lua +++ b/UI/ItemButton.lua @@ -509,6 +509,18 @@ function Guda_ItemButton_SetItem(self, bagID, slotID, itemData, isBank, otherCha displayTexture = liveTexture displayCount = liveCount self.hasItem = true + elseif bagID == -2 then + -- Fallback for keyring in 1.12.1 + local link = GetContainerItemLink(bagID, slotID) + if link then + self.hasItem = true + -- We might not have the texture from GetContainerItemInfo, try to get it from GetItemInfo + local _, _, _, _, _, _, _, _, itemTexture = GetItemInfo(link) + displayTexture = itemTexture + displayCount = 1 -- Keyring items are usually unique anyway + else + self.hasItem = false + end else -- No item in this slot (even if itemData has cached data) self.hasItem = false @@ -955,6 +967,14 @@ function Guda_ItemButton_OnEnter(self) -- Bank is closed - use cached link GameTooltip:SetHyperlink(self.itemData.link) end + elseif self.bagID == -2 then + -- Keyring: SetBagItem might be unreliable for -2 in some 1.12.1 environments, fallback to hyperlink if needed + local link = GetContainerItemLink(self.bagID, self.slotID) + if link then + GameTooltip:SetHyperlink(link) + else + GameTooltip:SetBagItem(self.bagID, self.slotID) + end else -- For live mode: use SetBagItem for all bags GameTooltip:SetBagItem(self.bagID, self.slotID)