mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-16 06:40:13 -05:00
Remove UnitPopupButtons usage
I need to find a way to reintroduce this, but Blizzard's new method of building these frames doesn't look like it's going to be particularly easy. This stops error popups on 9.2.5
This commit is contained in:
230
IceHUD.lua
230
IceHUD.lua
@ -684,134 +684,134 @@ function IceHUD:GetIsInLFGGroup()
|
||||
return IsInLFGGroup
|
||||
end
|
||||
|
||||
local BLACKLISTED_UNIT_MENU_OPTIONS = {
|
||||
SET_FOCUS = "ICEHUD_SET_FOCUS",
|
||||
CLEAR_FOCUS = "ICEHUD_CLEAR_FOCUS",
|
||||
PET_DISMISS = "ICEHUD_PET_DISMISS",
|
||||
LOCK_FOCUS_FRAME = true,
|
||||
UNLOCK_FOCUS_FRAME = true,
|
||||
}
|
||||
if UnitPopupButtons then
|
||||
local BLACKLISTED_UNIT_MENU_OPTIONS = {
|
||||
SET_FOCUS = "ICEHUD_SET_FOCUS",
|
||||
CLEAR_FOCUS = "ICEHUD_CLEAR_FOCUS",
|
||||
PET_DISMISS = "ICEHUD_PET_DISMISS",
|
||||
LOCK_FOCUS_FRAME = true,
|
||||
UNLOCK_FOCUS_FRAME = true,
|
||||
}
|
||||
|
||||
UnitPopupButtons["ICEHUD_SET_FOCUS"] = {
|
||||
text = L["Type %s to set focus"]:format(SLASH_FOCUS1),
|
||||
tooltipText = L["Blizzard currently does not provide a proper way to right-click focus with custom unit frames."],
|
||||
dist = 0,
|
||||
}
|
||||
UnitPopupButtons["ICEHUD_SET_FOCUS"] = {
|
||||
text = L["Type %s to set focus"]:format(SLASH_FOCUS1),
|
||||
tooltipText = L["Blizzard currently does not provide a proper way to right-click focus with custom unit frames."],
|
||||
dist = 0,
|
||||
}
|
||||
|
||||
UnitPopupButtons["ICEHUD_CLEAR_FOCUS"] = {
|
||||
text = L["Type %s to clear focus"]:format(SLASH_CLEARFOCUS1),
|
||||
tooltipText = L["Blizzard currently does not provide a proper way to right-click focus with custom unit frames."],
|
||||
dist = 0,
|
||||
}
|
||||
UnitPopupButtons["ICEHUD_CLEAR_FOCUS"] = {
|
||||
text = L["Type %s to clear focus"]:format(SLASH_CLEARFOCUS1),
|
||||
tooltipText = L["Blizzard currently does not provide a proper way to right-click focus with custom unit frames."],
|
||||
dist = 0,
|
||||
}
|
||||
|
||||
UnitPopupButtons["ICEHUD_PET_DISMISS"] = {
|
||||
text = L["Use your Dismiss Pet spell to dismiss a pet"],
|
||||
tooltipText = L["Blizzard currently does not provide a proper way to right-click dismiss a pet with custom unit frames."],
|
||||
dist = 0,
|
||||
}
|
||||
UnitPopupButtons["ICEHUD_PET_DISMISS"] = {
|
||||
text = L["Use your Dismiss Pet spell to dismiss a pet"],
|
||||
tooltipText = L["Blizzard currently does not provide a proper way to right-click dismiss a pet with custom unit frames."],
|
||||
dist = 0,
|
||||
}
|
||||
|
||||
local munged_unit_menus = {}
|
||||
local function munge_unit_menu(menu)
|
||||
local result = munged_unit_menus[menu]
|
||||
if result then
|
||||
return result
|
||||
end
|
||||
|
||||
if not UnitPopupMenus then
|
||||
munged_unit_menus[menu] = menu
|
||||
return menu
|
||||
end
|
||||
|
||||
local data = UnitPopupMenus[menu]
|
||||
if not data then
|
||||
munged_unit_menus[menu] = menu
|
||||
return menu
|
||||
end
|
||||
|
||||
local found = false
|
||||
local _, v
|
||||
for _, v in ipairs(data) do
|
||||
if BLACKLISTED_UNIT_MENU_OPTIONS[v] then
|
||||
found = true
|
||||
break
|
||||
local munged_unit_menus = {}
|
||||
local function munge_unit_menu(menu)
|
||||
local result = munged_unit_menus[menu]
|
||||
if result then
|
||||
return result
|
||||
end
|
||||
end
|
||||
|
||||
if not found then
|
||||
-- nothing to remove or add, we're all fine here.
|
||||
munged_unit_menus[menu] = menu
|
||||
return menu
|
||||
end
|
||||
|
||||
local new_data = {}
|
||||
for _, v in ipairs(data) do
|
||||
local blacklisted = BLACKLISTED_UNIT_MENU_OPTIONS[v]
|
||||
if v == "PET_DISMISS" and select(2, UnitClass("player")) == "WARLOCK" then
|
||||
blacklisted = false
|
||||
if not UnitPopupMenus then
|
||||
munged_unit_menus[menu] = menu
|
||||
return menu
|
||||
end
|
||||
if not blacklisted then
|
||||
new_data[#new_data+1] = v
|
||||
elseif blacklisted ~= true then
|
||||
new_data[#new_data+1] = blacklisted
|
||||
|
||||
local data = UnitPopupMenus[menu]
|
||||
if not data then
|
||||
munged_unit_menus[menu] = menu
|
||||
return menu
|
||||
end
|
||||
|
||||
local found = false
|
||||
local _, v
|
||||
for _, v in ipairs(data) do
|
||||
if BLACKLISTED_UNIT_MENU_OPTIONS[v] then
|
||||
found = true
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if not found then
|
||||
-- nothing to remove or add, we're all fine here.
|
||||
munged_unit_menus[menu] = menu
|
||||
return menu
|
||||
end
|
||||
|
||||
local new_data = {}
|
||||
for _, v in ipairs(data) do
|
||||
local blacklisted = BLACKLISTED_UNIT_MENU_OPTIONS[v]
|
||||
if v == "PET_DISMISS" and select(2, UnitClass("player")) == "WARLOCK" then
|
||||
blacklisted = false
|
||||
end
|
||||
if not blacklisted then
|
||||
new_data[#new_data+1] = v
|
||||
elseif blacklisted ~= true then
|
||||
new_data[#new_data+1] = blacklisted
|
||||
end
|
||||
end
|
||||
local new_menu_name = "ICEHUD_" .. menu
|
||||
|
||||
UnitPopupMenus[new_menu_name] = new_data
|
||||
munged_unit_menus[menu] = new_menu_name
|
||||
return new_menu_name
|
||||
end
|
||||
local new_menu_name = "ICEHUD_" .. menu
|
||||
IceHUD.MungeUnitMenu = munge_unit_menu
|
||||
|
||||
UnitPopupMenus[new_menu_name] = new_data
|
||||
munged_unit_menus[menu] = new_menu_name
|
||||
return new_menu_name
|
||||
end
|
||||
IceHUD.MungeUnitMenu = munge_unit_menu
|
||||
local function figure_unit_menu(unit)
|
||||
if unit == "focus" then
|
||||
return "FOCUS"
|
||||
end
|
||||
|
||||
local function figure_unit_menu(unit)
|
||||
if unit == "focus" then
|
||||
return "FOCUS"
|
||||
if UnitIsUnit(unit, "player") then
|
||||
return "SELF"
|
||||
end
|
||||
|
||||
if UnitIsUnit(unit, "vehicle") then
|
||||
-- NOTE: vehicle check must come before pet check for accuracy's sake because
|
||||
-- a vehicle may also be considered your pet
|
||||
return "VEHICLE"
|
||||
end
|
||||
|
||||
if UnitIsUnit(unit, "pet") then
|
||||
return "PET"
|
||||
end
|
||||
|
||||
if not UnitIsPlayer(unit) then
|
||||
return "TARGET"
|
||||
end
|
||||
|
||||
local id = UnitInRaid(unit)
|
||||
if id then
|
||||
return "RAID_PLAYER", id
|
||||
end
|
||||
|
||||
if UnitInParty(unit) then
|
||||
return "PARTY"
|
||||
end
|
||||
|
||||
return "PLAYER"
|
||||
end
|
||||
|
||||
if UnitIsUnit(unit, "player") then
|
||||
return "SELF"
|
||||
end
|
||||
|
||||
if UnitIsUnit(unit, "vehicle") then
|
||||
-- NOTE: vehicle check must come before pet check for accuracy's sake because
|
||||
-- a vehicle may also be considered your pet
|
||||
return "VEHICLE"
|
||||
end
|
||||
|
||||
if UnitIsUnit(unit, "pet") then
|
||||
return "PET"
|
||||
end
|
||||
|
||||
if not UnitIsPlayer(unit) then
|
||||
return "TARGET"
|
||||
end
|
||||
|
||||
local id = UnitInRaid(unit)
|
||||
if id then
|
||||
return "RAID_PLAYER", id
|
||||
end
|
||||
|
||||
if UnitInParty(unit) then
|
||||
return "PARTY"
|
||||
end
|
||||
|
||||
return "PLAYER"
|
||||
end
|
||||
|
||||
IceHUD_UnitFrame_DropDown = CreateFrame("Frame", "IceHUD_UnitFrame_DropDown", UIParent, "UIDropDownMenuTemplate")
|
||||
if UnitPopupFrames then
|
||||
IceHUD_UnitFrame_DropDown = CreateFrame("Frame", "IceHUD_UnitFrame_DropDown", UIParent, "UIDropDownMenuTemplate")
|
||||
UnitPopupFrames[#UnitPopupFrames+1] = "IceHUD_UnitFrame_DropDown"
|
||||
end
|
||||
|
||||
IceHUD.DropdownUnit = nil
|
||||
UIDropDownMenu_Initialize(IceHUD_UnitFrame_DropDown, function()
|
||||
if not IceHUD.DropdownUnit then
|
||||
return
|
||||
end
|
||||
IceHUD.DropdownUnit = nil
|
||||
UIDropDownMenu_Initialize(IceHUD_UnitFrame_DropDown, function()
|
||||
if not IceHUD.DropdownUnit then
|
||||
return
|
||||
end
|
||||
|
||||
local menu, id = figure_unit_menu(IceHUD.DropdownUnit)
|
||||
if menu then
|
||||
menu = IceHUD.MungeUnitMenu(menu)
|
||||
UnitPopup_ShowMenu(IceHUD_UnitFrame_DropDown, menu, IceHUD.DropdownUnit, nil, id)
|
||||
end
|
||||
end, "MENU", nil)
|
||||
local menu, id = figure_unit_menu(IceHUD.DropdownUnit)
|
||||
if menu then
|
||||
menu = IceHUD.MungeUnitMenu(menu)
|
||||
UnitPopup_ShowMenu(IceHUD_UnitFrame_DropDown, menu, IceHUD.DropdownUnit, nil, id)
|
||||
end
|
||||
end, "MENU", nil)
|
||||
end
|
Reference in New Issue
Block a user