fix: category spacing

This commit is contained in:
Salikh Gurgenidze
2025-12-23 21:32:49 +04:00
parent 9dcf76d80a
commit dddbbb7407
3 changed files with 61 additions and 21 deletions
+40 -11
View File
@@ -155,6 +155,46 @@ function Utils:FormatTimeAgo(timestamp)
end
end
-- Create hidden tooltip for scanning (only once)
local scanTooltip = nil
local function GetScanTooltip()
if not scanTooltip then
scanTooltip = CreateFrame("GameTooltip", "GudaBagScanTooltip", nil, "GameTooltipTemplate")
scanTooltip:SetOwner(WorldFrame, "ANCHOR_NONE")
end
return scanTooltip
end
-- Check if an item is a quest item by scanning its tooltip
function Utils:IsQuestItemTooltip(bagID, slotID)
if not bagID or not slotID then return false end
local tooltip = GetScanTooltip()
tooltip:ClearLines()
tooltip:SetBagItem(bagID, slotID)
-- Check all tooltip lines for quest-related text
for i = 1, tooltip:NumLines() do
local line = getglobal("GudaBagScanTooltipTextLeft" .. i)
if line then
local text = line:GetText()
if text then
-- Check for quest starter patterns
if string.find(text, "Quest Starter") or
string.find(text, "This Item Begins a Quest") or
string.find(text, "Use: Starts a Quest") then
return true
-- Check for regular quest item patterns
elseif string.find(text, "Quest Item") or
string.find(text, "Manual") then
return true
end
end
end
end
return false
end
-- Get bag slot count
function Utils:GetBagSlotCount(bagID)
if bagID == -1 then
@@ -190,17 +230,6 @@ function Utils:TruncateText(text, maxLen)
return string.sub(text, 1, maxLen - 3) .. "..."
end
-- Create hidden tooltip for scanning (only once)
local scanTooltip = nil
local function GetScanTooltip()
if not scanTooltip then
scanTooltip = CreateFrame("GameTooltip", "GudaBagScanTooltip", nil, "GameTooltipTemplate")
scanTooltip:SetOwner(WorldFrame, "ANCHOR_NONE")
end
return scanTooltip
end
-- Check if a bag is Quiver or Ammo Pouch
function Utils:IsAmmoQuiverBag(bagID)
-- Skip backpack, bank, and keyring
if bagID == 0 or bagID == -1 or bagID == -2 then
+11 -5
View File
@@ -422,6 +422,12 @@ function BagFrame:DisplayItemsByCategory(bagData, isOtherChar, charName)
local cat = itemData.class or "Miscellaneous"
local itemName = itemData.name or ""
-- Force Quest category if it's a quest item (tooltip scan)
-- For other characters, we rely on the saved class, but for current we can be more accurate
if not isOtherChar and addon.Modules.Utils:IsQuestItemTooltip(bagID, slotID) then
cat = "Quest"
end
-- Detect Hearthstone
if string.find(itemName, "Hearthstone") then
table.insert(specialItems.Hearthstone, {bagID = bagID, slotID = slotID, itemData = itemData})
@@ -509,7 +515,7 @@ function BagFrame:DisplayItemsByCategory(bagData, isOtherChar, charName)
local blockHeight = 20 + (blockRows * (buttonSize + spacing)) + 5 -- 20 header, 5 padding
-- Check if it fits in current row
if currentX > 0 and currentX + blockWidth > totalWidth + 5 then
if currentX > 0 and currentX + blockWidth + 20 > totalWidth + 5 then
currentX = 0
currentY = currentY + rowMaxHeight
rowMaxHeight = 0
@@ -553,7 +559,7 @@ function BagFrame:DisplayItemsByCategory(bagData, isOtherChar, charName)
end
if blockHeight > rowMaxHeight then rowMaxHeight = blockHeight end
currentX = currentX + blockWidth
currentX = currentX + blockWidth + 20
end
end
@@ -605,7 +611,7 @@ function BagFrame:DisplayItemsByCategory(bagData, isOtherChar, charName)
local blockHeight = 20 + (blockRows * (buttonSize + spacing))
-- Check if it fits in current row (Inline block for bottom sections too)
if col > 0 and (col * (buttonSize + spacing)) + blockWidth > totalWidth + 5 then
if col > 0 and (col * (buttonSize + spacing)) + blockWidth + 20 > totalWidth + 5 then
col = 0
y = y - sectionMaxHeight - 5
sectionMaxHeight = 0
@@ -642,10 +648,10 @@ function BagFrame:DisplayItemsByCategory(bagData, isOtherChar, charName)
end
if blockHeight > sectionMaxHeight then sectionMaxHeight = blockHeight end
col = col + blockCols
col = col + blockCols + math.ceil(20 / (buttonSize + spacing))
-- If we wrapped exactly at the end of a block
if col >= perRow then
if (col * (buttonSize + spacing)) >= totalWidth then
col = 0
y = y - sectionMaxHeight - 5
sectionMaxHeight = 0
+10 -5
View File
@@ -297,6 +297,11 @@ function BankFrame:DisplayItemsByCategory(bankData, isOtherChar, charName)
local cat = itemData.class or "Miscellaneous"
-- Force Quest category if it's a quest item (tooltip scan)
if not isOtherChar and addon.Modules.Utils:IsQuestItemTooltip(bagID, slotID) then
cat = "Quest"
end
-- Split Equipment into Weapon and Armor
if itemData.equipSlot and itemData.equipSlot ~= "" then
if itemData.class == "Weapon" or itemData.class == "Armor" then
@@ -375,7 +380,7 @@ function BankFrame:DisplayItemsByCategory(bankData, isOtherChar, charName)
local blockHeight = 20 + (blockRows * (buttonSize + spacing)) + 5
-- Check if it fits in current row
if currentX > 0 and currentX + blockWidth > totalWidth + 5 then
if currentX > 0 and currentX + blockWidth + 20 > totalWidth + 5 then
currentX = 0
currentY = currentY + rowMaxHeight
rowMaxHeight = 0
@@ -419,7 +424,7 @@ function BankFrame:DisplayItemsByCategory(bankData, isOtherChar, charName)
end
if blockHeight > rowMaxHeight then rowMaxHeight = blockHeight end
currentX = currentX + blockWidth
currentX = currentX + blockWidth + 20
end
end
@@ -471,7 +476,7 @@ function BankFrame:DisplayItemsByCategory(bankData, isOtherChar, charName)
local blockHeight = 20 + (blockRows * (buttonSize + spacing))
-- Check if it fits in current row (Inline block for bottom sections too)
if col > 0 and (col * (buttonSize + spacing)) + blockWidth > totalWidth + 5 then
if col > 0 and (col * (buttonSize + spacing)) + blockWidth + 20 > totalWidth + 5 then
col = 0
y = y - sectionMaxHeight - 5
sectionMaxHeight = 0
@@ -508,10 +513,10 @@ function BankFrame:DisplayItemsByCategory(bankData, isOtherChar, charName)
end
if blockHeight > sectionMaxHeight then sectionMaxHeight = blockHeight end
col = col + blockCols
col = col + blockCols + math.ceil(20 / (buttonSize + spacing))
-- If we wrapped exactly at the end of a block
if col >= perRow then
if (col * (buttonSize + spacing)) >= totalWidth then
col = 0
y = y - sectionMaxHeight - 5
sectionMaxHeight = 0