From 3069c2626ea8ddd7d676388c7013c9ab184af411 Mon Sep 17 00:00:00 2001 From: shagu Date: Sun, 14 Apr 2019 14:48:25 +0200 Subject: [PATCH] unitframes: add securefuncs handling for TBC --- api/unitframes.lua | 45 +++++++++++++++++++++++++++++---------------- compat/tbc.lua | 1 + compat/vanilla.lua | 1 + 3 files changed, 31 insertions(+), 16 deletions(-) diff --git a/api/unitframes.lua b/api/unitframes.lua index 7dd6f2e2..61bbf7de 100644 --- a/api/unitframes.lua +++ b/api/unitframes.lua @@ -712,6 +712,23 @@ function pfUI.uf.OnClick() end end +function pfUI.uf:RightClickAction(unit) + if unit == "player" then + ToggleDropDownMenu(1, nil, PlayerFrameDropDown, "cursor") + elseif unit == "target" then + ToggleDropDownMenu(1, nil, TargetFrameDropDown, "cursor") + elseif unit == "pet" then + ToggleDropDownMenu(1, nil, PetFrameDropDown, "cursor") + elseif unit == "party" then + ToggleDropDownMenu(1, nil, getglobal("PartyMemberFrame" .. this.id .. "DropDown"), "cursor") + elseif unit == "raid" then + local name = this.lastUnit + FriendsDropDown.displayMode = "MENU" + FriendsDropDown.initialize = function() UnitPopup_ShowMenu(_G[UIDROPDOWNMENU_OPEN_MENU], "PARTY", unitstr, name, id) end + ToggleDropDownMenu(1, nil, FriendsDropDown, "cursor") + end +end + function pfUI.uf:EnableEvents() local f = self @@ -749,12 +766,21 @@ end function pfUI.uf:EnableScripts() local f = self + -- handle secure unit button templates (> vanilla) + if f.SetAttribute then + f.showmenu = pfUI.uf.RightClickAction + f:SetAttribute("unit", f.label .. f.id) + f:SetAttribute("type1", "target") + f:SetAttribute("type2", "showmenu") + else + f:SetScript("OnClick", pfUI.uf.OnClick) + end + f:SetScript("OnShow", pfUI.uf.OnShow) f:SetScript("OnEvent", pfUI.uf.OnEvent) f:SetScript("OnUpdate", pfUI.uf.OnUpdate) f:SetScript("OnEnter", pfUI.uf.OnEnter) f:SetScript("OnLeave", pfUI.uf.OnLeave) - f:SetScript("OnClick", pfUI.uf.OnClick) end function pfUI.uf:CreateUnitFrame(unit, id, config, tick) @@ -779,7 +805,7 @@ function pfUI.uf:CreateUnitFrame(unit, id, config, tick) unit, id = "target", "" end - local f = CreateFrame("Button", "pf" .. fname, UIParent) + local f = CreateFrame("Button", "pf" .. fname, UIParent, UNITFRAME_SECURE_TEMPLATE) -- add unitframe functions f.UpdateFrameSize = pfUI.uf.UpdateFrameSize @@ -1515,20 +1541,7 @@ function pfUI.uf:ClickAction(button) -- dropdown menus if button == "RightButton" then - if label == "player" then - ToggleDropDownMenu(1, nil, PlayerFrameDropDown, "cursor") - elseif label == "target" then - ToggleDropDownMenu(1, nil, TargetFrameDropDown, "cursor") - elseif label == "pet" then - ToggleDropDownMenu(1, nil, PetFrameDropDown, "cursor") - elseif label == "party" then - ToggleDropDownMenu(1, nil, _G["PartyMemberFrame" .. this.id .. "DropDown"], "cursor") - elseif label == "raid" then - local name = this.lastUnit - FriendsDropDown.displayMode = "MENU" - FriendsDropDown.initialize = function() UnitPopup_ShowMenu(_G[UIDROPDOWNMENU_OPEN_MENU], "PARTY", unitstr, name, id) end - ToggleDropDownMenu(1, nil, FriendsDropDown, "cursor") - end + pfUI.uf:RightClickAction(label) else -- drop food on petframe if label == "pet" and CursorHasItem() then diff --git a/compat/tbc.lua b/compat/tbc.lua index 4a7c7784..781749c6 100644 --- a/compat/tbc.lua +++ b/compat/tbc.lua @@ -28,6 +28,7 @@ PLAYER_BUFF_START_ID = 0 ACTIONBAR_SECURE_TEMPLATE_BAR = "SecureStateHeaderTemplate" ACTIONBAR_SECURE_TEMPLATE_BUTTON = "SecureActionButtonTemplate" +UNITFRAME_SECURE_TEMPLATE = "SecureUnitButtonTemplate" --[[ TBC API Extensions ]]-- function UnitBuff(unitstr, i) diff --git a/compat/vanilla.lua b/compat/vanilla.lua index e09d77a6..075a35eb 100644 --- a/compat/vanilla.lua +++ b/compat/vanilla.lua @@ -24,6 +24,7 @@ PLAYER_BUFF_START_ID = -1 ACTIONBAR_SECURE_TEMPLATE_BAR = nil ACTIONBAR_SECURE_TEMPLATE_BUTTON = nil +UNITFRAME_SECURE_TEMPLATE = nil --[[ Vanilla API Extensions ]]-- function hooksecurefunc(name, func, append)