diff --git a/UI/BagFrame.lua b/UI/BagFrame.lua index 8ca9f32..7c97a5b 100644 --- a/UI/BagFrame.lua +++ b/UI/BagFrame.lua @@ -204,7 +204,7 @@ function BagFrame:UpdateSingleSlot(bagID, slotID) local itemData = nil if itemLink then - local texture, itemCount, locked = GetContainerItemInfo(bagID, slotID) + local texture, itemCount, locked, slotQuality = GetContainerItemInfo(bagID, slotID) local itemID = nil local _, _, idStr = string.find(itemLink, "item:(%d+)") if idStr then itemID = tonumber(idStr) end @@ -215,7 +215,7 @@ function BagFrame:UpdateSingleSlot(bagID, slotID) link = itemLink, texture = texture, count = itemCount or 1, - quality = quality or 0, + quality = quality or slotQuality or 0, name = name, iLevel = iLevel, type = itemType, diff --git a/UI/BankFrame.lua b/UI/BankFrame.lua index 11d917d..1fbf2f3 100644 --- a/UI/BankFrame.lua +++ b/UI/BankFrame.lua @@ -154,18 +154,18 @@ function BankFrame:UpdateSingleSlot(bagID, slotID) local itemData = nil if itemLink then - local texture, itemCount, locked = GetContainerItemInfo(bagID, slotID) + local texture, itemCount, locked, quality = GetContainerItemInfo(bagID, slotID) local itemID = nil local _, _, idStr = string.find(itemLink, "item:(%d+)") if idStr then itemID = tonumber(idStr) end if itemID then - local name, link, quality, iLevel, _, itemType, stackCount, subType, _, equipLoc = GetItemInfo(itemID) + local name, link, itemQuality, iLevel, _, itemType, stackCount, subType, _, equipLoc = GetItemInfo(itemID) itemData = { link = itemLink, texture = texture, count = itemCount or 1, - quality = quality or 0, + quality = quality or itemQuality or 0, -- Prefer GetContainerItemInfo, fallback to GetItemInfo name = name, iLevel = iLevel, type = itemType, diff --git a/UI/ItemButton.lua b/UI/ItemButton.lua index a1f21b4..fe5337c 100644 --- a/UI/ItemButton.lua +++ b/UI/ItemButton.lua @@ -993,12 +993,21 @@ function Guda_ItemButton_SetItem(self, bagID, slotID, itemData, isBank, otherCha isLocked = locked end + -- Fall back to itemData.quality if live query returned nil (timing issue on bank open) + if itemQuality == nil and itemData and itemData.quality then + itemQuality = itemData.quality + end + -- Ensure itemData is populated for live items (needed for ItemDetection) if itemLink then local itemName, _, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemTexture = GetItemInfo(itemLink) -- For bank main bag, get quality from GetItemInfo if self.isBank and bagID == -1 then itemQuality = itemRarity + -- Fall back to itemData.quality if GetItemInfo returned nil + if itemQuality == nil and itemData and itemData.quality then + itemQuality = itemData.quality + end end if not itemData then -- Create new itemData