mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-16 14:50: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
|
return IsInLFGGroup
|
||||||
end
|
end
|
||||||
|
|
||||||
local BLACKLISTED_UNIT_MENU_OPTIONS = {
|
if UnitPopupButtons then
|
||||||
SET_FOCUS = "ICEHUD_SET_FOCUS",
|
local BLACKLISTED_UNIT_MENU_OPTIONS = {
|
||||||
CLEAR_FOCUS = "ICEHUD_CLEAR_FOCUS",
|
SET_FOCUS = "ICEHUD_SET_FOCUS",
|
||||||
PET_DISMISS = "ICEHUD_PET_DISMISS",
|
CLEAR_FOCUS = "ICEHUD_CLEAR_FOCUS",
|
||||||
LOCK_FOCUS_FRAME = true,
|
PET_DISMISS = "ICEHUD_PET_DISMISS",
|
||||||
UNLOCK_FOCUS_FRAME = true,
|
LOCK_FOCUS_FRAME = true,
|
||||||
}
|
UNLOCK_FOCUS_FRAME = true,
|
||||||
|
}
|
||||||
|
|
||||||
UnitPopupButtons["ICEHUD_SET_FOCUS"] = {
|
UnitPopupButtons["ICEHUD_SET_FOCUS"] = {
|
||||||
text = L["Type %s to set focus"]:format(SLASH_FOCUS1),
|
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."],
|
tooltipText = L["Blizzard currently does not provide a proper way to right-click focus with custom unit frames."],
|
||||||
dist = 0,
|
dist = 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
UnitPopupButtons["ICEHUD_CLEAR_FOCUS"] = {
|
UnitPopupButtons["ICEHUD_CLEAR_FOCUS"] = {
|
||||||
text = L["Type %s to clear focus"]:format(SLASH_CLEARFOCUS1),
|
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."],
|
tooltipText = L["Blizzard currently does not provide a proper way to right-click focus with custom unit frames."],
|
||||||
dist = 0,
|
dist = 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
UnitPopupButtons["ICEHUD_PET_DISMISS"] = {
|
UnitPopupButtons["ICEHUD_PET_DISMISS"] = {
|
||||||
text = L["Use your Dismiss Pet spell to dismiss a pet"],
|
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."],
|
tooltipText = L["Blizzard currently does not provide a proper way to right-click dismiss a pet with custom unit frames."],
|
||||||
dist = 0,
|
dist = 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
local munged_unit_menus = {}
|
local munged_unit_menus = {}
|
||||||
local function munge_unit_menu(menu)
|
local function munge_unit_menu(menu)
|
||||||
local result = munged_unit_menus[menu]
|
local result = munged_unit_menus[menu]
|
||||||
if result then
|
if result then
|
||||||
return result
|
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
|
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
if not found then
|
if not UnitPopupMenus then
|
||||||
-- nothing to remove or add, we're all fine here.
|
munged_unit_menus[menu] = menu
|
||||||
munged_unit_menus[menu] = menu
|
return 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
|
end
|
||||||
if not blacklisted then
|
|
||||||
new_data[#new_data+1] = v
|
local data = UnitPopupMenus[menu]
|
||||||
elseif blacklisted ~= true then
|
if not data then
|
||||||
new_data[#new_data+1] = blacklisted
|
munged_unit_menus[menu] = menu
|
||||||
|
return menu
|
||||||
end
|
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
|
end
|
||||||
local new_menu_name = "ICEHUD_" .. menu
|
IceHUD.MungeUnitMenu = munge_unit_menu
|
||||||
|
|
||||||
UnitPopupMenus[new_menu_name] = new_data
|
local function figure_unit_menu(unit)
|
||||||
munged_unit_menus[menu] = new_menu_name
|
if unit == "focus" then
|
||||||
return new_menu_name
|
return "FOCUS"
|
||||||
end
|
end
|
||||||
IceHUD.MungeUnitMenu = munge_unit_menu
|
|
||||||
|
|
||||||
local function figure_unit_menu(unit)
|
if UnitIsUnit(unit, "player") then
|
||||||
if unit == "focus" then
|
return "SELF"
|
||||||
return "FOCUS"
|
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
|
end
|
||||||
|
|
||||||
if UnitIsUnit(unit, "player") then
|
IceHUD_UnitFrame_DropDown = CreateFrame("Frame", "IceHUD_UnitFrame_DropDown", UIParent, "UIDropDownMenuTemplate")
|
||||||
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
|
|
||||||
UnitPopupFrames[#UnitPopupFrames+1] = "IceHUD_UnitFrame_DropDown"
|
UnitPopupFrames[#UnitPopupFrames+1] = "IceHUD_UnitFrame_DropDown"
|
||||||
end
|
|
||||||
|
|
||||||
IceHUD.DropdownUnit = nil
|
IceHUD.DropdownUnit = nil
|
||||||
UIDropDownMenu_Initialize(IceHUD_UnitFrame_DropDown, function()
|
UIDropDownMenu_Initialize(IceHUD_UnitFrame_DropDown, function()
|
||||||
if not IceHUD.DropdownUnit then
|
if not IceHUD.DropdownUnit then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local menu, id = figure_unit_menu(IceHUD.DropdownUnit)
|
local menu, id = figure_unit_menu(IceHUD.DropdownUnit)
|
||||||
if menu then
|
if menu then
|
||||||
menu = IceHUD.MungeUnitMenu(menu)
|
menu = IceHUD.MungeUnitMenu(menu)
|
||||||
UnitPopup_ShowMenu(IceHUD_UnitFrame_DropDown, menu, IceHUD.DropdownUnit, nil, id)
|
UnitPopup_ShowMenu(IceHUD_UnitFrame_DropDown, menu, IceHUD.DropdownUnit, nil, id)
|
||||||
end
|
end
|
||||||
end, "MENU", nil)
|
end, "MENU", nil)
|
||||||
|
end
|
@ -1,5 +1,9 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
v1.13.15:
|
||||||
|
|
||||||
|
- Fixed compatibility with WoW 9.2.5.
|
||||||
|
|
||||||
v1.13.14:
|
v1.13.14:
|
||||||
|
|
||||||
- Fixed target health updating infrequently on Classic.
|
- Fixed target health updating infrequently on Classic.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
v1.13.14:
|
v1.13.15:
|
||||||
|
|
||||||
- Fixed target health updating infrequently on Classic.
|
- Fixed compatibility with WoW 9.2.5.
|
||||||
|
Reference in New Issue
Block a user