# HG changeset patch # User contrebasse # Date 1304105179 -7200 # Node ID 0af9cb8a79f0edb00fc7fcad49232a89f5902198 # Parent 218e1dd1b821d29009244390604f2d6b457dde25 Manage items not ready (not in cache ?) when opening the external frame. Can potentially conflict with BAG_UPDATE event. diff -r 218e1dd1b821 -r 0af9cb8a79f0 SecureMenu.lua --- a/SecureMenu.lua Fri Apr 29 00:14:25 2011 +0200 +++ b/SecureMenu.lua Fri Apr 29 21:26:19 2011 +0200 @@ -1,7 +1,7 @@ local addonName, A = ... -- Create the menu frame -local MenuFrame = CreateFrame("Frame","ReagentMaker_ExternalFrame",UIParent) --, "ReagentMakerDropDownMenu"); -- Needs a global name ? +local MenuFrame = CreateFrame("Frame","ReagentMaker_ExternalFrame",UIParent) MenuFrame:Hide() MenuFrame:SetSize(192,256) MenuFrame:SetFrameStrata("DIALOG") @@ -233,18 +233,18 @@ end -- Set text and icon - local name, link, quality, iLevel, reqLevel, class, subclass, maxStack, equipSlot, texture, vendorPrice = GetItemInfo(reagent[1]) + local name, _, _, _, _, _, _, _, _, texture = GetItemInfo(reagent[1]) if name then btn.itemName:SetText(name) else - A.DEBUG("No item name : "..reagent[1]) + --A.DEBUG("No item name : "..reagent[1]) return end if texture then btn.icon:SetTexture(texture) else - A.DEBUG("No item texture : "..reagent[1]) + --A.DEBUG("No item texture : "..reagent[1]) return end @@ -281,8 +281,20 @@ -- Increase the entry number numActiveEntries = numActiveEntries + 1 + + -- Everything went well + return true end -- function +-- Function used on OnUpdate tu update the frame if there were errors the previous time +local function reopen() + -- Release OnUpdate frame (could conflict with BAG_UPDATE) + MenuFrame:SetScript("OnUpdate",nil) + + -- reopen + A.externalCraftWindow(MenuFrame.itemID,MenuFrame.superItemID) +end + -- Fill the window and open it function A.externalCraftWindow(itemID,superItemID) -- Do not open during combat @@ -299,7 +311,7 @@ numActiveEntries = 0 -- Fill the info of the reagent to make - local name, link, quality, iLevel, reqLevel, class, subclass, maxStack, equipSlot, texture, vendorPrice = GetItemInfo(itemID) + local name, _, quality, _, _, _, _, _, _, texture = GetItemInfo(itemID) SetPortraitToTexture(itemIcon, texture) TitleText:SetText(name) local color = ITEM_QUALITY_COLORS[quality] @@ -310,15 +322,16 @@ MenuFrame.spellLink = A.data[itemID].spellLink MenuFrame.itemID = itemID MenuFrame.superItemID = superItemID -- optional - + -- Loop over the available recipes + MenuFrame.state = true for _,reagent in ipairs(A.data[itemID]) do if A.data[itemID].spell then -- Special spell - menuAddItem(A.data[itemID].spell,itemID,reagent,A.data[itemID].spellLink) + MenuFrame.state = menuAddItem(A.data[itemID].spell,itemID,reagent,A.data[itemID].spellLink) and state else -- Standard tradeskill spell UNTESTED - menuAddItem(A.craft,itemID,reagent) + MenuFrame.state = menuAddItem(A.craft,itemID,reagent) and state end -- if end -- for @@ -330,4 +343,8 @@ MenuFrame.updateCounts() MenuFrame:Show() + + if not MenuFrame.state then + MenuFrame:SetScript("OnUpdate",reopen) + end end