Quantcast

(heavy) workaround for missing entry in profession window

Ignifazius [08-22-15 - 10:17]
(heavy) workaround for missing entry in profession window
(fix for issue #21)
Since one of Blizzards get-functions sees to be breoken (returning 0 in
the profession window), i tryed to fix it with a workaround: Check if ID
is 0, then replace it with the resulting link by comparing the MouseOver &
SelectedTradeSKill information.
Filename
BagSync.lua
diff --git a/BagSync.lua b/BagSync.lua
index 026481c..ebcfae9 100644
--- a/BagSync.lua
+++ b/BagSync.lua
@@ -832,7 +832,25 @@ local function AddCurrencyToTooltip(frame, currencyName)
 end

 local function AddItemToTooltip(frame, link)
-	--if we can't convert the item link then lets just ignore it altogether
+	if (link) then
+		local itemId = tonumber(string.match(link, "item:(%d+):"))	-- get itemID // itemID seems to be "0" for every reagent in profession window?!
+		if (itemId == 0) then
+			local newItemId
+			if (GetMouseFocus():GetName()) == "TradeSkillSkillIcon" then 			--replace TradeSkill
+				newItemId = tonumber(GetTradeSkillItemLink(TradeSkillFrame.selectedSkill):match("item:(%d+):"))
+			else 		-- could check if a reagent is under mouse, but since we have to check it 3 lines later again...
+				for i = 1, 12 do 													-- how many reagents can a reciepe have? lets assume not more than 12
+					if (GetMouseFocus():GetName()) == "TradeSkillReagent"..i then 	--replace TradeSkillReagents
+						newItemId = tonumber(GetTradeSkillReagentItemLink(TradeSkillFrame.selectedSkill, i):match("item:(%d+):"))
+						break 			--end loop if correct one already found
+					end
+				end
+			end
+			_, link = GetItemInfo(newItemId) -- replace original link with our found link
+		end
+	end
+
+	--if we can't convert the item link then lets just ignore it altogether
 	local itemLink = ToShortLink(link)
 	if not itemLink then
 		frame:Show()
@@ -1007,7 +1025,15 @@ local function hookTip(tooltip)
 		local currencyName = GetBackpackCurrencyInfo(index)
 		AddCurrencyToTooltip(self, currencyName)
 	end)
+	-- hooksecurefunc(tooltip, 'SetTradeSkillReagentInfo', function(self, index)
+		-- if modified or not BagSyncOpt.enableTooltips then return end
+		-- modified = true
+		-- local currencyName = GetTradeSkillReagentInfo(index,1)
+		-- AddCurrencyToTooltip(self, currencyName)
+	-- end)
 end
+--GameTooltip:SetTradeSkillItem(skillIndex [, reagentIndex])
+

 hookTip(GameTooltip)
 hookTip(ItemRefTooltip)