diff --git a/AddOns/Blizzard_BattlefieldMinimap/Blizzard_BattlefieldMinimap.lua b/AddOns/Blizzard_BattlefieldMinimap/Blizzard_BattlefieldMinimap.lua index cbac8813..ccfb062f 100644 --- a/AddOns/Blizzard_BattlefieldMinimap/Blizzard_BattlefieldMinimap.lua +++ b/AddOns/Blizzard_BattlefieldMinimap/Blizzard_BattlefieldMinimap.lua @@ -27,7 +27,7 @@ function BattlefieldMinimap_Toggle() SetCVar("showBattlefieldMinimap", "1"); BattlefieldMinimap:Show(); WorldMapZoneMinimapDropDown_Update(); - elseif ( instanceType == "none" ) then + elseif ( instanceType ~= "arena" ) then SetCVar("showBattlefieldMinimap", "2"); BattlefieldMinimap:Show(); WorldMapZoneMinimapDropDown_Update(); diff --git a/AddOns/Blizzard_Calendar/Blizzard_Calendar.lua b/AddOns/Blizzard_Calendar/Blizzard_Calendar.lua index 7ade0aea..e0827565 100644 --- a/AddOns/Blizzard_Calendar/Blizzard_Calendar.lua +++ b/AddOns/Blizzard_Calendar/Blizzard_Calendar.lua @@ -1,29 +1,4 @@ --- global constants -CALENDAR_FIRST_WEEKDAY = 1; -- 1=SUN 2=MON 3=TUE 4=WED 5=THU 6=FRI 7=SAT - --- Event Types -CALENDAR_EVENTTYPE_RAID = 1; -CALENDAR_EVENTTYPE_DUNGEON = 2; -CALENDAR_EVENTTYPE_PVP = 3; -CALENDAR_EVENTTYPE_MEETING = 4; -CALENDAR_EVENTTYPE_OTHER = 5; - --- Invite Statuses -CALENDAR_INVITESTATUS_INVITED = 1; -CALENDAR_INVITESTATUS_ACCEPTED = 2; -CALENDAR_INVITESTATUS_DECLINED = 3; -CALENDAR_INVITESTATUS_CONFIRMED = 4; -CALENDAR_INVITESTATUS_OUT = 5; -CALENDAR_INVITESTATUS_STANDBY = 6; -CALENDAR_INVITESTATUS_SIGNEDUP = 7; -CALENDAR_INVITESTATUS_NOT_SIGNEDUP = 8; - --- Invite Types -CALENDAR_INVITETYPE_NORMAL = 1; -CALENDAR_INVITETYPE_SIGNUP = 2; - - -- static popups StaticPopupDialogs["CALENDAR_DELETE_EVENT"] = { text = "%s", diff --git a/AddOns/Blizzard_GlyphUI/Blizzard_GlyphUI.lua b/AddOns/Blizzard_GlyphUI/Blizzard_GlyphUI.lua index a1892b50..f9642a1c 100644 --- a/AddOns/Blizzard_GlyphUI/Blizzard_GlyphUI.lua +++ b/AddOns/Blizzard_GlyphUI/Blizzard_GlyphUI.lua @@ -70,12 +70,17 @@ function GlyphFrameGlyph_UpdateSlot (self) else GlyphFrameGlyph_SetGlyphType(self, GLYPHTYPE_MAJOR); end - + self.elapsed = 0; self.tintElapsed = 0; - + + local slotAnimation = slotAnimations[id]; if ( not enabled ) then - slotAnimations[id].glyph = nil; + slotAnimation.glyph = nil; + if ( slotAnimation.sparkle ) then + slotAnimation.sparkle:StopAnimating(); + slotAnimation.sparkle:Hide(); + end self.shine:Hide(); self.background:Hide(); self.glyph:Hide(); @@ -83,7 +88,11 @@ function GlyphFrameGlyph_UpdateSlot (self) self.setting:SetTexture("Interface\\Spellbook\\UI-GlyphFrame-Locked"); self.setting:SetTexCoord(.1, .9, .1, .9); elseif ( not glyphSpell ) then - slotAnimations[id].glyph = nil; + slotAnimation.glyph = nil; + if ( slotAnimation.sparkle ) then + slotAnimation.sparkle:StopAnimating(); + slotAnimation.sparkle:Hide(); + end self.spell = nil; self.shine:Show(); self.background:Show(); @@ -94,7 +103,7 @@ function GlyphFrameGlyph_UpdateSlot (self) self.glyph:Hide(); self.ring:Show(); else - slotAnimations[id].glyph = true; + slotAnimation.glyph = true; self.spell = glyphSpell; self.shine:Show(); self.background:Show(); @@ -369,40 +378,33 @@ end function GlyphFrame_StartSlotAnimation (slotID, duration, size) local animation = slotAnimations[slotID]; + -- init texture to animate local sparkleName = "GlyphFrameSparkle"..slotID; local sparkle = _G[sparkleName]; - if ( sparkle and sparkle.wait ) then - -- width and height resize is done - sparkle.wait = false; - - -- init animation - local offsetX, offsetY = animation.xStop - animation.xStart, animation.yStop - animation.yStart; - local animGroupAnim = sparkle.animGroup.translate; - animGroupAnim:SetOffset(offsetX, offsetY); - animGroupAnim:SetDuration(duration); - animGroupAnim:Play(); + if ( not sparkle ) then + sparkle = GlyphFrame:CreateTexture(sparkleName, "OVERLAY", "GlyphSparkleTexture"); + sparkle.slotID = slotID; + end + local template; + if ( size == 1 ) then + template = "SparkleTextureSmall"; + elseif ( size == 2 ) then + template = "SparkleTextureKindaSmall"; else - -- init texture to animate - if ( not sparkle ) then - sparkle = GlyphFrame:CreateTexture(sparkleName, "OVERLAY", "GlyphSparkleTexture"); - sparkle.slotID = slotID; - end - -- we need to wait a tick for the width and height resize to take effect - sparkle.wait = true; - local template; - if ( size == 1 ) then - template = "SparkleTextureSmall"; - elseif ( size == 2 ) then - template = "SparkleTextureKindaSmall"; - else - template = "SparkleTextureNormal"; - end - local sparkleDim = SparkleDimensions[template]; - sparkle:SetHeight(sparkleDim.height); - sparkle:SetWidth(sparkleDim.width); - sparkle:SetPoint("CENTER", GlyphFrame, animation.point, animation.xStart, animation.yStart); - sparkle:Show(); + template = "SparkleTextureNormal"; end + local sparkleDim = SparkleDimensions[template]; + sparkle:SetHeight(sparkleDim.height); + sparkle:SetWidth(sparkleDim.width); + sparkle:SetPoint("CENTER", GlyphFrame, animation.point, animation.xStart, animation.yStart); + sparkle:Show(); + + -- init animation + local offsetX, offsetY = animation.xStop - animation.xStart, animation.yStop - animation.yStart; + local animGroupAnim = sparkle.animGroup.translate; + animGroupAnim:SetOffset(offsetX, offsetY); + animGroupAnim:SetDuration(duration); + animGroupAnim:Play(); animation.sparkle = sparkle; end diff --git a/AddOns/Blizzard_TalentUI/Blizzard_TalentUI.lua b/AddOns/Blizzard_TalentUI/Blizzard_TalentUI.lua index e730fe7d..063572ad 100644 --- a/AddOns/Blizzard_TalentUI/Blizzard_TalentUI.lua +++ b/AddOns/Blizzard_TalentUI/Blizzard_TalentUI.lua @@ -213,6 +213,8 @@ function PlayerTalentFrame_ShowGlyphFrame() else GlyphFrame:Show(); end + -- don't forget to hide the scroll button overlay or it may show up on top of the GlyphFrame! + UIFrameFlashStop(PlayerTalentFrameScrollButtonOverlay); end end diff --git a/FrameXML/ArenaRegistrarFrame.xml b/FrameXML/ArenaRegistrarFrame.xml index 2284cc3f..41116b77 100644 --- a/FrameXML/ArenaRegistrarFrame.xml +++ b/FrameXML/ArenaRegistrarFrame.xml @@ -954,11 +954,6 @@ HideUIPanel(ColorPickerFrame); ClosePetitionVendor(); - - if ( GetBindingFromClick(key) == "TOGGLEGAMEMENU" ) then - HideUIPanel(self); - end - diff --git a/FrameXML/Constants.lua b/FrameXML/Constants.lua index e3b31d1c..49c98793 100644 --- a/FrameXML/Constants.lua +++ b/FrameXML/Constants.lua @@ -288,3 +288,29 @@ COMBATLOG_FILTER_NEUTRAL_UNITS = bit.bor( COMBATLOG_FILTER_UNKNOWN_UNITS = COMBATLOG_OBJECT_NONE; COMBATLOG_FILTER_EVERYTHING = 0xFFFFFFFF; +-- +-- Calendar +-- + +CALENDAR_FIRST_WEEKDAY = 1; -- 1=SUN 2=MON 3=TUE 4=WED 5=THU 6=FRI 7=SAT + +-- Event Types +CALENDAR_EVENTTYPE_RAID = 1; +CALENDAR_EVENTTYPE_DUNGEON = 2; +CALENDAR_EVENTTYPE_PVP = 3; +CALENDAR_EVENTTYPE_MEETING = 4; +CALENDAR_EVENTTYPE_OTHER = 5; + +-- Invite Statuses +CALENDAR_INVITESTATUS_INVITED = 1; +CALENDAR_INVITESTATUS_ACCEPTED = 2; +CALENDAR_INVITESTATUS_DECLINED = 3; +CALENDAR_INVITESTATUS_CONFIRMED = 4; +CALENDAR_INVITESTATUS_OUT = 5; +CALENDAR_INVITESTATUS_STANDBY = 6; +CALENDAR_INVITESTATUS_SIGNEDUP = 7; +CALENDAR_INVITESTATUS_NOT_SIGNEDUP = 8; + +-- Invite Types +CALENDAR_INVITETYPE_NORMAL = 1; +CALENDAR_INVITETYPE_SIGNUP = 2; diff --git a/FrameXML/ContainerFrame.lua b/FrameXML/ContainerFrame.lua index 2f11a93b..922e7bc5 100644 --- a/FrameXML/ContainerFrame.lua +++ b/FrameXML/ContainerFrame.lua @@ -649,6 +649,8 @@ function ContainerFrame_GetExtendedPriceString(itemButton, quantity) MerchantFrame.refundBag = bag; MerchantFrame.refundSlot = slot; + MerchantFrame.honorPoints = honorPoints; + MerchantFrame.arenaPoints = arenaPoints; local refundItemTexture, _, _, _, _, _, refundItemLink = GetContainerItemInfo(bag, slot); local itemName, _, itemQuality = GetItemInfo(refundItemLink); diff --git a/FrameXML/GlobalStrings.lua b/FrameXML/GlobalStrings.lua index c97c1cf1..1ebc7e0f 100644 --- a/FrameXML/GlobalStrings.lua +++ b/FrameXML/GlobalStrings.lua @@ -1625,6 +1625,8 @@ CONFIRM_LOSE_BINDING_CHANGES = "You will lose any unsaved changes if you switch CONFIRM_OVERWRITE_EQUIPMENT_SET = "You already have an equipment set named %s. Would you like to overwrite it?"; CONFIRM_PET_UNLEARN = "Do you want to unlearn all of your pet's skills? The cost will increase each time you do it."; CONFIRM_PURCHASE_TOKEN_ITEM = "Are you sure you wish to exchange %s for the following item?"; +CONFIRM_REFUND_MAX_ARENA_POINTS = "You are close to the maximum amount of arena points. Selling this item will result in the loss of %d arena points. Proceed?"; +CONFIRM_REFUND_MAX_HONOR = "You are close to the maximum amount of honor points. Selling this item will result in the loss of %d honor points. Proceed?"; CONFIRM_REFUND_TOKEN_ITEM = "Are you sure you wish to get a refund of %s for the following item?"; -- for the refund system CONFIRM_REMOVE_GLYPH = "Are you sure you want to remove %s? This glyph will be permanently destroyed."; CONFIRM_RESET_INSTANCES = "Do you really want to reset all of your instances?"; @@ -2673,6 +2675,7 @@ ERR_BATTLEDGROUND_QUEUED_FOR_RATED = "You cannot queue for another battle while ERR_BATTLEGROUND_ALREADY_IN = "You are already in that battleground."; ERR_BATTLEGROUND_CANNOT_QUEUE_FOR_RATED = "You cannot queue for a rated match while queued for other battles"; ERR_BATTLEGROUND_INFO_THROTTLED = "You can't do that yet"; +ERR_BATTLEGROUND_NOT_IN_BATTLEGROUND = "You can't do that in a battleground."; ERR_BATTLEGROUND_NOT_IN_TEAM = "Your group is not in the same team"; ERR_BATTLEGROUND_TEAM_LEFT_QUEUE = "Your team has left the arena queue"; ERR_BATTLEGROUND_TOO_MANY_QUEUES = "You can only be queued for 3 battles at once"; @@ -6860,8 +6863,9 @@ TRANSFER_ABORT_DIFFICULTY3 = "Epic difficulty mode is not available for %s."; TRANSFER_ABORT_INSUF_EXPAN_LVL1 = "You must have The Burning Crusade expansion installed to access this area."; TRANSFER_ABORT_INSUF_EXPAN_LVL2 = "You must have The Wrath of the Lich King expansion installed to access this area."; TRANSFER_ABORT_MAX_PLAYERS = "Transfer Aborted: instance is full"; -- Too many players in instance -TRANSFER_ABORT_NEED_GROUP = "Transfer Aborted: you must be in a group to enter this instance"; -- Player tried to enter a raid or heroic dungeon while not in a group +TRANSFER_ABORT_NEED_GROUP = "Transfer Aborted: you must be in a raid group to enter this instance"; -- Player tried to enter a raid or heroic dungeon while not in a group TRANSFER_ABORT_NOT_FOUND = "Transfer Aborted: instance not found"; -- Something's wrong with the server +TRANSFER_ABORT_REALM_ONLY = "Transfer Aborted: all players in the party must be from the same realm"; -- Triggers when players from different servers try to enter a "realm-only" dungeon. TRANSFER_ABORT_TOO_MANY_INSTANCES = "You have entered too many instances recently."; TRANSFER_ABORT_TOO_MANY_REALM_INSTANCES = "Additional instances cannot be launched, please try again later."; TRANSFER_ABORT_UNIQUE_MESSAGE1 = "Until you've escaped The Lich King's grasp, you cannot leave this place!"; diff --git a/FrameXML/ItemButtonTemplate.lua b/FrameXML/ItemButtonTemplate.lua index 877a41b6..0430a904 100644 --- a/FrameXML/ItemButtonTemplate.lua +++ b/FrameXML/ItemButtonTemplate.lua @@ -10,7 +10,7 @@ function SetItemButtonCount(button, count) button.count = count; if ( count > 1 or (button.isBag and count > 0) ) then - if ( count > 999 ) then + if ( count > 1999 ) then count = "*"; end getglobal(button:GetName().."Count"):SetText(count); diff --git a/FrameXML/MoneyFrame.lua b/FrameXML/MoneyFrame.lua index a1852fd5..23a72f93 100644 --- a/FrameXML/MoneyFrame.lua +++ b/FrameXML/MoneyFrame.lua @@ -381,7 +381,7 @@ function MoneyFrame_Update(frameName, money) width = width + copperButton:GetWidth(); silverButton:SetPoint("RIGHT", frameName.."CopperButton", "LEFT", spacing, 0); - if ( silverButton:IsShown() ) then + if ( silverButton:IsShown() or goldButton:IsShown() ) then width = width - spacing; end else diff --git a/FrameXML/RestrictedEnvironment.lua b/FrameXML/RestrictedEnvironment.lua index cb5110f5..e74b6887 100644 --- a/FrameXML/RestrictedEnvironment.lua +++ b/FrameXML/RestrictedEnvironment.lua @@ -167,7 +167,8 @@ local DIRECT_MACRO_CONDITIONAL_NAMES = { }; local OTHER_SAFE_FUNCTION_NAMES = { - "GetBindingKey", + "GetBindingKey", "HasAction", + "IsHarmfulSpell", "IsHarmfulItem", "IsHelpfulSpell", "IsHelpfulItem" }; -- Copy the direct functions into the table @@ -208,4 +209,12 @@ function ENV.PlayerInGroup() or ( GetNumPartyMembers() > 0 and "party" ) end +function ENV.UnitHasVehicleUI(unit) + return UnitCanAssist("player", unit) and UnitHasVehicleUI(unit) +end + +function ENV.RegisterStateDriver(frameHandle, ...) + return RegisterStateDriver(GetFrameHandleFrame(frameHandle), ...) +end + ENV = nil; diff --git a/FrameXML/SecureTemplates.lua b/FrameXML/SecureTemplates.lua index 2f59b44c..8c881fb4 100644 --- a/FrameXML/SecureTemplates.lua +++ b/FrameXML/SecureTemplates.lua @@ -124,26 +124,47 @@ function SecureButton_GetAttribute(frame, name) end function SecureButton_GetModifiedUnit(self, button) - local unit = SecureButton_GetModifiedAttribute(self, "unit", button); - if ( unit ) then - local unitsuffix = SecureButton_GetModifiedAttribute(self, "unitsuffix", button); - if ( unitsuffix ) then - unit = unit .. unitsuffix; - -- map raid1pet to raidpet1 - unit = gsub(unit, "^([^%d]+)([%d]+)[pP][eE][tT]", "%1pet%2"); - end - return unit; - end - if ( SecureButton_GetModifiedAttribute(self, "checkselfcast", button) ) then - if ( IsModifiedClick("SELFCAST") ) then - return "player"; - end - end - if ( SecureButton_GetModifiedAttribute(self, "checkfocuscast", button) ) then - if ( IsModifiedClick("FOCUSCAST") ) then - return "focus"; - end - end + local unit = SecureButton_GetModifiedAttribute(self, "unit", button); + if ( unit ) then + local unitsuffix = SecureButton_GetModifiedAttribute(self, "unitsuffix", button); + if ( unitsuffix ) then + unit = unit .. unitsuffix; + -- map raid1pet to raidpet1 + unit = gsub(unit, "^([^%d]+)([%d]+)[pP][eE][tT]", "%1pet%2"); + end + + local noPet, hadPet = unit:gsub("[pP][eE][tT](%d)", "%1"); + if ( hadPet == 0 ) then + noPet, hadPet = unit:gsub("^[pP][eE][tT]", "player"); + end + local noPetNoTarget, hadTarget = noPet:gsub("[tT][aA][rR][gG][eE][tT]", ""); + if ( UnitHasVehicleUI(noPetNoTarget) and + SecureButton_GetModifiedAttribute(self, "toggleForVehicle", button) and + (noPetNoTarget == noPetNoTarget:gsub("^[mM][oO][uU][sS][eE][oO][vV][eE][rR]", "") + :gsub("^[fF][oO][cC][uU][sS]", "") + :gsub("^[aA][rR][eE][nN][aA]%d", "")) + -- NOTE: using these 3 gsubs is faster than a :lower() call and a table lookup + -- "target" is not included in the above check because it is already filtered out earlier on + ) then + if ( hadPet ~= 0 ) then + unit = noPet; + elseif ( (hadTarget == 0) or SecureButton_GetModifiedAttribute(self, "allowVehicleTarget", button) ) then + unit = unit:gsub("^[pP][lL][aA][yY][eE][rR]", "pet"):gsub("^([%a]+)([%d]+)", "%1pet%2"); + end + end + + return unit; + end + if ( SecureButton_GetModifiedAttribute(self, "checkselfcast", button) ) then + if ( IsModifiedClick("SELFCAST") ) then + return "player"; + end + end + if ( SecureButton_GetModifiedAttribute(self, "checkfocuscast", button) ) then + if ( IsModifiedClick("FOCUSCAST") ) then + return "focus"; + end + end end function SecureButton_GetUnit(self) local unit = SecureButton_GetAttribute(self, "unit"); diff --git a/FrameXML/StaticPopup.lua b/FrameXML/StaticPopup.lua index eb2922d6..7b18c0ad 100644 --- a/FrameXML/StaticPopup.lua +++ b/FrameXML/StaticPopup.lua @@ -135,7 +135,17 @@ StaticPopupDialogs["CONFIRM_REFUND_TOKEN_ITEM"] = { button1 = YES, button2 = NO, OnAccept = function() - ContainerRefundItemPurchase(MerchantFrame.refundBag, MerchantFrame.refundSlot); + local currentHonor, maxHonor = GetHonorCurrency(); + if ( MerchantFrame.honorPoints and (MerchantFrame.honorPoints + currentHonor > maxHonor) ) then + StaticPopup_Show("CONFIRM_REFUND_MAX_HONOR", (MerchantFrame.honorPoints + currentHonor - maxHonor) ) + else + local currentArenaPoints, maxArenaPoints = GetArenaCurrency(); + if ( MerchantFrame.arenaPoints and (MerchantFrame.arenaPoints + currentArenaPoints > maxArenaPoints) ) then + StaticPopup_Show("CONFIRM_REFUND_MAX_ARENA_POINTS", (MerchantFrame.arenaPoints + currentArenaPoints - maxArenaPoints)) + else + ContainerRefundItemPurchase(MerchantFrame.refundBag, MerchantFrame.refundSlot); + end + end StackSplitFrame:Hide(); end, OnCancel = function() @@ -152,6 +162,49 @@ StaticPopupDialogs["CONFIRM_REFUND_TOKEN_ITEM"] = { hasItemFrame = 1, } +StaticPopupDialogs["CONFIRM_REFUND_MAX_HONOR"] = { + text = CONFIRM_REFUND_MAX_HONOR, + button1 = YES, + button2 = NO, + OnAccept = function() + ContainerRefundItemPurchase(MerchantFrame.refundBag, MerchantFrame.refundSlot); + StackSplitFrame:Hide(); + end, + OnCancel = function() + + end, + OnShow = function() + + end, + OnHide = function() + + end, + timeout = 0, + hideOnEscape = 1, +} + +StaticPopupDialogs["CONFIRM_REFUND_MAX_ARENA_POINTS"] = { + text = CONFIRM_REFUND_MAX_ARENA_POINTS, + button1 = YES, + button2 = NO, + OnAccept = function() + ContainerRefundItemPurchase(MerchantFrame.refundBag, MerchantFrame.refundSlot); + StackSplitFrame:Hide(); + end, + OnCancel = function() + + end, + OnShow = function() + + end, + OnHide = function() + + end, + timeout = 0, + hideOnEscape = 1, +} + + StaticPopupDialogs["CONFIRM_HIGH_COST_ITEM"] = { text = CONFIRM_HIGH_COST_ITEM, button1 = YES, @@ -2104,16 +2157,12 @@ StaticPopupDialogs["INSTANCE_LOCK"] = { local name, type, difficulty = GetInstanceInfo(); self.name, self.difficulty = name, difficulty; end, - OnHide = function(self) - self.name, self.difficulty = nil, nil; - self.lockTimeleft = nil; - end, OnUpdate = function(self, elapsed) local lockTimeleft = self.lockTimeleft - elapsed; if ( lockTimeleft <= 0 ) then local OnCancel = StaticPopupDialogs["INSTANCE_LOCK"].OnCancel; if ( OnCancel ) then - OnCancel(self, self.data, "timeout"); + OnCancel(self, "timeout"); end self:Hide(); return; @@ -2128,13 +2177,17 @@ StaticPopupDialogs["INSTANCE_LOCK"] = { end, OnAccept = function(self) RespondInstanceLock(true); + self.name, self.difficulty = nil, nil; + self.lockTimeleft = nil; end, - OnCancel = function(self, data, reason) + OnCancel = function(self, reason) if ( reason == "timeout" ) then self:Hide(); return; end RespondInstanceLock(false); + self.name, self.difficulty = nil, nil; + self.lockTimeleft = nil; end, timeout = 0, showAlert = 1, diff --git a/FrameXML/TabardFrame.xml b/FrameXML/TabardFrame.xml index 734bc17b..8636a96f 100644 --- a/FrameXML/TabardFrame.xml +++ b/FrameXML/TabardFrame.xml @@ -271,12 +271,12 @@ - + - + @@ -284,7 +284,7 @@ - + @@ -293,7 +293,7 @@ - + @@ -306,7 +306,7 @@ - + diff --git a/FrameXML/UIDropDownMenu.lua b/FrameXML/UIDropDownMenu.lua index b44e0903..fe341759 100644 --- a/FrameXML/UIDropDownMenu.lua +++ b/FrameXML/UIDropDownMenu.lua @@ -212,15 +212,17 @@ function UIDropDownMenu_AddButton(info, level) level = 1; end - local listFrame = getglobal("DropDownList"..level); - local listFrameName = listFrame:GetName(); - local index = listFrame.numButtons + 1; + local listFrame = _G["DropDownList"..level]; + local index = listFrame and (listFrame.numButtons + 1) or 1; local width; UIDropDownMenuDelegate:SetAttribute("createframes-level", level); UIDropDownMenuDelegate:SetAttribute("createframes-index", index); UIDropDownMenuDelegate:SetAttribute("createframes", true); + listFrame = listFrame or _G["DropDownList"..level]; + local listFrameName = listFrame:GetName(); + -- Set the number of buttons in the listframe listFrame.numButtons = index; diff --git a/FrameXML/UIDropDownMenuTemplates.xml b/FrameXML/UIDropDownMenuTemplates.xml index a812424a..6e5da2de 100644 --- a/FrameXML/UIDropDownMenuTemplates.xml +++ b/FrameXML/UIDropDownMenuTemplates.xml @@ -91,7 +91,7 @@ local level = self:GetParent():GetParent():GetID() + 1; local listFrame = getglobal("DropDownList"..level); - if ( not listFrame:IsShown() or select(2, listFrame:GetPoint()) ~= self ) then + if ( not listFrame or not listFrame:IsShown() or select(2, listFrame:GetPoint()) ~= self ) then ToggleDropDownMenu(level, self:GetParent().value, nil, nil, nil, nil, self:GetParent().menuList, self); end UIDropDownMenu_StopCounting(self:GetParent():GetParent()); @@ -131,7 +131,7 @@ if ( self.hasArrow ) then local level = self:GetParent():GetID() + 1; local listFrame = getglobal("DropDownList"..level); - if ( not listFrame:IsShown() or select(2, listFrame:GetPoint()) ~= self ) then + if ( not listFrame or not listFrame:IsShown() or select(2, listFrame:GetPoint()) ~= self ) then ToggleDropDownMenu(self:GetParent():GetID() + 1, self.value, nil, nil, nil, nil, self.menuList, self); end else diff --git a/FrameXML/WorldMapFrame.lua b/FrameXML/WorldMapFrame.lua index eb8b14b4..b2161389 100644 --- a/FrameXML/WorldMapFrame.lua +++ b/FrameXML/WorldMapFrame.lua @@ -821,7 +821,7 @@ function WorldMapButton_OnUpdate(self, elapsed) local index = 0; for i=1, numVehicles do if (i > totalVehicles) then - local vehicleName = "BattlefieldMinimap"..i; + local vehicleName = "WorldMapVehicles"..i; MAP_VEHICLES[i] = CreateFrame("FRAME", vehicleName, WorldMapButton, "WorldMapVehicleTemplate"); MAP_VEHICLES[i].texture = _G[vehicleName.."Texture"]; end