diff --git a/IceHUD.lua b/IceHUD.lua index 9a41bf1..bef5c6e 100644 --- a/IceHUD.lua +++ b/IceHUD.lua @@ -107,8 +107,6 @@ IceHUD.validBarList = { "Bar", "HiBar", "RoundBar", "ColorBar", "RivetBar", "Riv "BloodGlaives", "ArcHUD", "FangRune", "DHUD", "CleanCurvesOut", "CleanTank", "PillTank", "GemTank" } IceHUD.validCustomModules = {Bar="Buff/Debuff watcher", Counter="Buff/Debuff stack counter", CD="Cooldown bar", Health="Health bar", Mana="Mana bar", CounterBar="Stack count bar"} -IceHUD_UnitFrame_DropDown = CreateFrame("Frame", "IceHUD_UnitFrame_DropDown", UIParent, "UIDropDownMenuTemplate") - --@debug@ IceHUD.optionsLoaded = true --@end-debug@ @@ -801,229 +799,6 @@ function IceHUD:GetIsInLFGGroup() return IsInLFGGroup end -local BLACKLISTED_UNIT_MENU_OPTIONS = {} -if UnitPopupButtons then - BLACKLISTED_UNIT_MENU_OPTIONS = { - SET_FOCUS = "ICEHUD_SET_FOCUS", - CLEAR_FOCUS = "ICEHUD_CLEAR_FOCUS", - LOCK_FOCUS_FRAME = true, - UNLOCK_FOCUS_FRAME = true, - } - if select(2, UnitClass("player")) ~= "WARLOCK" then - BLACKLISTED_UNIT_MENU_OPTIONS[PET_DISMISS] = "ICEHUD_PET_DISMISS" - end - - 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_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, - } -elseif UnitPopupSetFocusButtonMixin then - IceHUDUnitPopupSetFocusButtonMixin = CreateFromMixins(UnitPopupButtonBaseMixin) - function IceHUDUnitPopupSetFocusButtonMixin:GetText() - return L["Type %s to set focus"]:format(SLASH_FOCUS1) - end - function IceHUDUnitPopupSetFocusButtonMixin:OnClick() - end - - IceHUDUnitPopupClearFocusButtonMixin = CreateFromMixins(UnitPopupButtonBaseMixin) - function IceHUDUnitPopupClearFocusButtonMixin:GetText() - return L["Type %s to clear focus"]:format(SLASH_CLEARFOCUS1) - end - function IceHUDUnitPopupClearFocusButtonMixin:OnClick() - end - - IceHUDUnitPopupPetDismissButtonMixin = CreateFromMixins(UnitPopupButtonBaseMixin) - function IceHUDUnitPopupPetDismissButtonMixin:GetText() - return L["Use your Dismiss Pet spell to dismiss a pet"] - end - function IceHUDUnitPopupPetDismissButtonMixin:CanShow() - return UnitPopupPetDismissButtonMixin:CanShow() - end - function IceHUDUnitPopupPetDismissButtonMixin:OnClick() - end - - BLACKLISTED_UNIT_MENU_OPTIONS[SET_FOCUS] = IceHUDUnitPopupSetFocusButtonMixin - BLACKLISTED_UNIT_MENU_OPTIONS[CLEAR_FOCUS] = IceHUDUnitPopupClearFocusButtonMixin - BLACKLISTED_UNIT_MENU_OPTIONS[LOCK_FOCUS_FRAME] = true - BLACKLISTED_UNIT_MENU_OPTIONS[UNLOCK_FOCUS_FRAME] = true - - if select(2, UnitClass("player")) ~= "WARLOCK" then - BLACKLISTED_UNIT_MENU_OPTIONS[PET_DISMISS] = IceHUDUnitPopupPetDismissButtonMixin - end -end - -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 - if data.GetMenuButtons then - local btns = data.GetMenuButtons() - for i=1, #btns do - if btns[i].IsMenu() then - local subbtns = btns[i].GetMenuButtons() - for j=1, #subbtns do - if BLACKLISTED_UNIT_MENU_OPTIONS[subbtns[j]:GetText()] then - found = true - break - end - end - else - if BLACKLISTED_UNIT_MENU_OPTIONS[btns[i]:GetText()] then - found = true - break - end - end - - if found then - break - end - end - else - for _, v in ipairs(data) do - if BLACKLISTED_UNIT_MENU_OPTIONS[v] then - found = true - break - end - 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 = {} - if data.GetMenuButtons then - local new_buttons_list = {} - local btns = data.GetMenuButtons() - for i=1, #btns do - if btns[i].IsMenu() then - local subbtns = btns[i].GetMenuButtons() - for j=1, #subbtns do - if subbtns[j] then - local blacklisted = BLACKLISTED_UNIT_MENU_OPTIONS[subbtns[j]:GetText()] - if not blacklisted then - new_buttons_list[#new_buttons_list+1] = subbtns[j] - elseif blacklisted ~= true then - new_buttons_list[#new_buttons_list+1] = blacklisted - end - end - end - else - local blacklisted = BLACKLISTED_UNIT_MENU_OPTIONS[btns[i]:GetText()] - if not blacklisted then - new_buttons_list[#new_buttons_list+1] = btns[i] - elseif blacklisted ~= true then - new_buttons_list[#new_buttons_list+1] = blacklisted - end - end - end - - new_data = data - function new_data:GetMenuButtons() - return new_buttons_list - end - else - for _, v in ipairs(data) do - local blacklisted = BLACKLISTED_UNIT_MENU_OPTIONS[v] - if not blacklisted then - new_data[#new_data+1] = v - elseif blacklisted ~= true then - new_data[#new_data+1] = blacklisted - end - 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 -IceHUD.MungeUnitMenu = munge_unit_menu - -local function figure_unit_menu(unit) - if unit == "focus" then - return "FOCUS" - 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 - -if UnitPopupFrames then - UnitPopupFrames[#UnitPopupFrames+1] = "IceHUD_UnitFrame_DropDown" -end - -IceHUD.DropdownUnit = nil -if UnitPopup_ShowMenu then - 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) -end - function IceHUD:OutOfCombatWrapper(func) return function(...) return IceHUD:RunOnLeaveCombat(func, ...) diff --git a/modules/PlayerHealth.lua b/modules/PlayerHealth.lua index 89579de..ec55b74 100644 --- a/modules/PlayerHealth.lua +++ b/modules/PlayerHealth.lua @@ -922,13 +922,6 @@ function PlayerHealth.prototype:CreateBackground(redraw) end end - if not self.frame.button.menu and UnitPopup_ShowMenu then - self.frame.button.menu = function(this, unit) - IceHUD.DropdownUnit = unit - ToggleDropDownMenu(1, nil, IceHUD_UnitFrame_DropDown, "cursor") - end - end - self:EnableClickTargeting(self.moduleSettings.allowMouseInteraction) end @@ -962,7 +955,7 @@ function PlayerHealth.prototype:EnableClickTargeting(bEnable) self.frame.button:EnableMouse(true) self.frame.button:RegisterForClicks("AnyUp") self.frame.button:SetAttribute("type1", "target") - self.frame.button:SetAttribute("type2", UnitPopup_ShowMenu and "menu" or "togglemenu") + self.frame.button:SetAttribute("type2", "togglemenu") self.frame.button:SetAttribute("unit", self.unit) -- set up click casting diff --git a/modules/TargetHealth.lua b/modules/TargetHealth.lua index c00e1e7..3d80df1 100644 --- a/modules/TargetHealth.lua +++ b/modules/TargetHealth.lua @@ -713,13 +713,6 @@ function IceTargetHealth.prototype:CreateBackground(redraw) self.frame.button:SetPoint("BOTTOMRIGHT", self.frame, "BOTTOMRIGHT", -1 * self.frame:GetWidth() / 1.5, 0) end end - - if not self.frame.button.menu and UnitPopup_ShowMenu then - self.frame.button.menu = function(this, unit) - IceHUD.DropdownUnit = unit - ToggleDropDownMenu(1, nil, IceHUD_UnitFrame_DropDown, "cursor") - end - end end end @@ -733,7 +726,7 @@ function IceTargetHealth.prototype:EnableClickTargeting(bEnable) self.frame.button:EnableMouse(true) self.frame.button:RegisterForClicks("AnyUp") self.frame.button:SetAttribute("type1", "target") - self.frame.button:SetAttribute("type2", UnitPopup_ShowMenu and "menu" or "togglemenu") + self.frame.button:SetAttribute("type2", "togglemenu") self.frame.button:SetAttribute("unit", self.unit) -- set up click casting diff --git a/modules/TargetInfo.lua b/modules/TargetInfo.lua index b9f7b78..0877b9c 100644 --- a/modules/TargetInfo.lua +++ b/modules/TargetInfo.lua @@ -1150,7 +1150,7 @@ do -- OVERRIDE: IceTargetInfo.prototype:CreateFrame(redraw) self.frame:SetScript("OnLeave", function(frame) self:OnLeave(frame) end) self.frame:SetAttribute("type1", "target") - self.frame:SetAttribute("type2", UnitPopup_ShowMenu and "menu" or "togglemenu") + self.frame:SetAttribute("type2", "togglemenu") -- set up click casting ClickCastFrames = ClickCastFrames or {} @@ -1173,13 +1173,6 @@ do -- OVERRIDE: IceTargetInfo.prototype:CreateFrame(redraw) self.frame:SetAttribute("unit", self.unit) - if not self.frame.menu and UnitPopup_ShowMenu then - self.frame.menu = function(this, unit) - IceHUD.DropdownUnit = unit - ToggleDropDownMenu(1, nil, IceHUD_UnitFrame_DropDown, "cursor") - end - end - -- create a fancy highlight frame for mouse over if (not self.frame.highLight) then