You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.4 KiB
49 lines
1.4 KiB
local E, L, V, P, G = unpack(ElvUI)
|
|
local S = E:GetModule('Skins')
|
|
|
|
local _G = _G
|
|
local hooksecurefunc = hooksecurefunc
|
|
|
|
local backdrops = {}
|
|
local function SkinFrame(frame)
|
|
frame:StripTextures()
|
|
|
|
if backdrops[frame] then
|
|
frame.backdrop = backdrops[frame] -- relink it back
|
|
else
|
|
frame:CreateBackdrop('Transparent') -- :SetTemplate errors out
|
|
backdrops[frame] = frame.backdrop -- keep below CreateBackdrop
|
|
|
|
if frame.ScrollBar then
|
|
S:HandleTrimScrollBar(frame.ScrollBar)
|
|
end
|
|
end
|
|
end
|
|
|
|
function S:SkinMenu(manager, ownerRegion, menuDescription, anchor)
|
|
local menu = manager:GetOpenMenu()
|
|
if not menu then return end
|
|
|
|
SkinFrame(menu) -- Initial context menu
|
|
menuDescription:AddMenuAcquiredCallback(SkinFrame) -- SubMenus
|
|
end
|
|
|
|
function S:OpenMenu(ownerRegion, menuDescription, anchor)
|
|
S:SkinMenu(self, ownerRegion, menuDescription, anchor) -- self is manager (Menu.GetManager)
|
|
end
|
|
|
|
function S:OpenContextMenu(ownerRegion, menuDescription)
|
|
S:SkinMenu(self, ownerRegion, menuDescription) -- self is manager (Menu.GetManager)
|
|
end
|
|
|
|
function S:Blizzard_Menu()
|
|
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.misc) then return end
|
|
|
|
local manager = _G.Menu.GetManager()
|
|
if manager then
|
|
hooksecurefunc(manager, 'OpenMenu', S.OpenMenu)
|
|
hooksecurefunc(manager, 'OpenContextMenu', S.OpenContextMenu)
|
|
end
|
|
end
|
|
|
|
S:AddCallbackForAddon('Blizzard_Menu')
|
|
|