In the main chunk:
Code:
local dropdown = CreateFrame("Frame", "MyAddOnUnitDropDownMenu", UIParent, "UIDropDownMenuTemplate")
UIDropDownMenu_Initialize(dropdown, function(self)
local unit = self:GetParent().unit
if not unit then return end
local menu, name, id
if UnitIsUnit(unit, "player") then
menu = "SELF"
elseif UnitIsUnit(unit, "vehicle") then
menu = "VEHICLE"
elseif UnitIsUnit(unit, "pet") then
menu = "PET"
elseif UnitIsPlayer(unit) then
id = UnitInRaid(unit)
if id then
menu = "RAID_PLAYER"
name = GetRaidRosterInfo(id)
elseif UnitInParty(unit) then
menu = "PARTY"
else
menu = "PLAYER"
end
else
menu = "TARGET"
name = RAID_TARGET_ICON
end
if menu then
UnitPopup_ShowMenu(self, menu, unit, name, id)
end
end, "MENU")
local menu = function(self)
dropdown:SetParent(self)
ToggleDropDownMenu(1, nil, dropdown, "cursor", 0, 0)
end
And in the function where your frame is created/configured (your layout's spawn function if you're using oUF):
Code:
frame.menu = menu
frame:SetAttribute("*type2", "menu")