diff SecureMenu.lua @ 76:9d487333bf10

Block cross-tradeskill in external window
author contrebasse
date Sat, 14 May 2011 21:30:56 +0200
parents 3d344a2d8fdf
children 996aaa818d04
line wrap: on
line diff
--- a/SecureMenu.lua	Sat May 14 21:00:38 2011 +0200
+++ b/SecureMenu.lua	Sat May 14 21:30:56 2011 +0200
@@ -330,17 +330,27 @@
 	MenuFrame.superItemID = superItemID -- optional, will be nil if not set
 
 	-- Loop over the available recipes
-	MenuFrame.state = true
+	local noSkipped = true -- check if we have to reload the external frame to get all the data
+	local existsValidEntries -- check if the menu contains at least one item (cross-tradeskill problem)
 	for _,reagent in ipairs(A.data[itemID]) do
 		if reagent.macro then
 			-- Special spell
-			MenuFrame.state = menuAddItem(reagent.macro,itemID,reagent) and MenuFrame.state
+			existsValidEntries = true
+			noSkipped = menuAddItem(reagent.macro,itemID,reagent) and noSkipped
 		else
-			-- Standard tradeskill spell UNTESTED
-			MenuFrame.state = menuAddItem(A.craft,itemID,reagent) and MenuFrame.state
+			-- Standard tradeskill spell
+			if reagent.spellID == A.currentTradeSkill then
+				existsValidEntries = true
+				noSkipped = menuAddItem(A.craft,itemID,reagent) and noSkipped
+			end
 		end -- if
 	end -- for
 
+	-- do not show an empty menu
+	if not existsValidEntries then
+		return false
+	end
+
 	MenuFrame:SetHeight(89 + numActiveEntries*(MENU_ENTRY_HEIGHT+2))
 
 	MenuFrame:ClearAllPoints()
@@ -351,7 +361,7 @@
 
 	MenuFrame:Show()
 
-	if not MenuFrame.state then
+	if not noSkipped then
 		MenuFrame:SetScript("OnUpdate",reopen)
 	end
 end