Change all use of heroclass to use RAID_CLASS_COLORS instead. This can be changed to CUSTOM_CLASS_COLORS later with a color picker for each class, but to support CoA classes need to go back to being colored properly.

Fix remaining lua errors covered by ascension patches

Add Addon Skins
Add Enhanced Friends List
This commit is contained in:
Andrew6810
2022-10-28 07:12:13 -07:00
parent 60ef8a38af
commit df7cc26a64
205 changed files with 18480 additions and 35 deletions
+640
View File
@@ -0,0 +1,640 @@
local E, L, V, P, G = unpack(ElvUI)
local S = E:GetModule("Skins")
local AS = E:GetModule("AddOnSkins")
if not AS:IsAddonLODorEnabled("DBM-Core") then return end
local _G = _G
local unpack = unpack
local find, gsub = string.find, string.gsub
local CreateFrame = CreateFrame
local hooksecurefunc = hooksecurefunc
-- Deadly Boss Mods 4.52 r4442
-- https://www.curseforge.com/wow/addons/deadly-boss-mods/files/447605
S:AddCallbackForAddon("DBM-Core", "DBM-Core", function()
if not E.private.addOnSkins.DBM then return end
local backportVersion = DBM.ReleaseRevision > 7000
local backportVersion2 = DBM.ReleaseRevision >= 20220412000000 -- 9.2.14
local function createIconOverlay(id, parent)
local frame = CreateFrame("Frame", "$parentIcon" .. id .. "Overlay", parent)
frame:SetTemplate()
if id == 1 then
if E.db.addOnSkins.DBMSkinHalf then
frame:Point("BOTTOMRIGHT", parent, "BOTTOMLEFT", -10 * (E.Border + E.Spacing), 0)
else
frame:Point("RIGHT", parent, "LEFT", -(E.Border + E.Spacing), 0)
end
elseif E.db.addOnSkins.DBMSkinHalf then
frame:Point("BOTTOMLEFT", parent, "BOTTOMRIGHT", 10 * (E.Border + E.Spacing), 0)
else
frame:Point("LEFT", parent, "RIGHT", (E.Border + E.Spacing), 0)
end
local backdroptex = frame:CreateTexture(nil, "BORDER")
backdroptex:SetTexture("Interface\\Icons\\Spell_Nature_WispSplode")
backdroptex:SetInside(frame)
backdroptex:SetTexCoord(unpack(E.TexCoords))
return frame
end
local function applyStyle(self)
local db = E.db.addOnSkins
local frame = self.frame
local frameName = frame:GetName()
local bar = _G[frameName .. "Bar"]
local background = _G[frameName .. "BarBackground"]
local icon1 = _G[frameName .. "BarIcon1"]
local icon2 = _G[frameName .. "BarIcon2"]
local name = _G[frameName .. "BarName"]
local timer = _G[frameName .. "BarTimer"]
local spark = _G[frameName .. "BarSpark"]
local scale = self.enlarged and self.owner.options.HugeScale or self.owner.options.Scale
local barWidth = (self.enlarged and self.owner.options.HugeWidth or self.owner.options.Width) * scale
local barHeight = (backportVersion2 and (self.enlarged and self.owner.options.HugeHeight or self.owner.options.Height) or db.dbmBarHeight) * scale
local fontSize = db.dbmFontSize * scale
background:Hide()
spark:Hide()
frame._SetPoint = frame.SetPoint
self._bar = bar
self._icon1 = icon1
self._icon2 = icon2
self._name = name
self._timer = timer
self._font = E.LSM:Fetch("font", db.dbmFont)
if not icon1.overlay then
icon1.overlay = createIconOverlay(1, frame)
icon1:SetTexCoord(unpack(E.TexCoords))
icon1:SetParent(icon1.overlay)
icon1:SetInside(icon1.overlay)
end
if not icon2.overlay then
icon2.overlay = createIconOverlay(2, frame)
icon2:SetTexCoord(unpack(E.TexCoords))
icon2:SetParent(icon2.overlay)
icon2:SetInside(icon2.overlay)
end
frame:SetScale(1)
frame:SetTemplate(db.dbmTemplate)
bar:SetInside(frame)
frame:Size(barWidth, db.DBMSkinHalf and barHeight / 3 or barHeight)
bar:Size(barWidth, barHeight)
icon1.overlay:Size(barHeight)
icon2.overlay:Size(barHeight)
name:ClearAllPoints()
timer:ClearAllPoints()
if db.DBMSkinHalf then
if not self.owner.options.BarYOffset or self.owner.options.BarYOffset < 20 then
self.owner.options.BarYOffset = 20
end
if not self.owner.options.HugeBarYOffset or self.owner.options.HugeBarYOffset < 20 then
self.owner.options.HugeBarYOffset = 20
end
name:Point("BOTTOMLEFT", frame, "TOPLEFT", 0, 3)
if backportVersion then
name:Point("BOTTOMRIGHT", timer, "BOTTOMLEFT")
end
timer:Point("BOTTOMRIGHT", frame, "TOPRIGHT", 1, 3)
else
name:Point("LEFT", 5, 0)
if backportVersion then
name:Point("RIGHT", timer, "LEFT")
end
timer:Point("RIGHT", -5, 0)
end
if not backportVersion then
name:SetFont(self._font, fontSize, db.dbmFontOutline)
timer:SetFont(self._font, fontSize, db.dbmFontOutline)
end
if self.owner.options.IconLeft then
icon1.overlay:Show()
else
icon1.overlay:Hide()
end
if self.owner.options.IconRight then
icon2.overlay:Show()
else
icon2.overlay:Hide()
end
end
local function skinBars(self)
local db = E.db.addOnSkins
for bar in self:GetBarIterator() do
if not bar.injected then
hooksecurefunc(bar, "Update", function()
local sparkEnabled = DBT.Options.Spark
if not (db.DBMSkinHalf and sparkEnabled) then return end
local spark = _G[bar.frame:GetName().."BarSpark"]
spark:SetSize(12, ((bar.enlarged and DBT.Options.HugeHeight or DBT.Options.Height) * 3) - 2)
local a, b, c, d = spark:GetPoint()
spark:SetPoint(a, b, c, d, 0)
end)
hooksecurefunc(bar, "ApplyStyle", function()
local frame = bar.frame
local tbar = _G[frame:GetName().."Bar"]
local icon1 = _G[frame:GetName().."BarIcon1"]
local icon2 = _G[frame:GetName().."BarIcon2"]
local name = _G[frame:GetName().."BarName"]
local timer = _G[frame:GetName().."BarTimer"]
local iconSize = (bar.enlarged and DBT.Options.HugeHeight or DBT.Options.Height) * db.dbmIconSize
if db.DBMSkinHalf then
iconSize = iconSize * 2
end
if not icon1.overlay then
icon1.overlay = createIconOverlay(1, frame)
icon1:SetTexCoord(unpack(E.TexCoords))
icon1:SetParent(icon1.overlay)
icon1:SetInside(icon1.overlay)
end
icon1.overlay:SetSize(iconSize, iconSize)
if not icon2.overlay then
icon2.overlay = createIconOverlay(2, frame)
icon2:SetTexCoord(unpack(E.TexCoords))
icon2:SetParent(icon2.overlay)
icon2:SetInside(icon2.overlay)
end
icon2.overlay:SetSize(iconSize, iconSize)
frame:SetTemplate(db.dbmTemplate)
tbar:SetInside(frame)
name:ClearAllPoints()
name:SetWidth(165)
name:SetHeight(8)
name:SetJustifyH("LEFT")
name:SetShadowColor(0, 0, 0, 0)
timer:ClearAllPoints()
timer:SetJustifyH("RIGHT")
timer:SetShadowColor(0, 0, 0, 0)
if db.DBMSkinHalf then
name:SetPoint("BOTTOMLEFT", frame, "TOPLEFT", 0, 3)
name:SetPoint("BOTTOMRIGHT", timer, "BOTTOMLEFT") -- truncation
timer:SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", -1, 1)
else
name:SetPoint("LEFT", frame, "LEFT", 4, 0)
name:SetPoint("RIGHT", timer, "LEFT") -- truncation
timer:SetPoint("RIGHT", frame, "RIGHT", -4, 0)
end
if DBT.Options.IconLeft then icon1.overlay:Show() else icon1.overlay:Hide() end
if DBT.Options.IconRight then icon2.overlay:Show() else icon2.overlay:Hide() end
bar.injected = true
end)
bar:ApplyStyle()
end
end
end
local function correctPoint(self, p1, a, p2, x, y)
self._SetPoint(self, p1, a, p2, x, y - 40)
self.SetPoint = nil
end
local function preUpdate(self, elapsed)
if (self.timer - elapsed > 0) and self.moving == "move" and self.moveElapsed <= 0.5 and self.owner.options.ExpandUpwards then
self.frame.SetPoint = correctPoint
end
end
local function setPosition(self)
if self.moving == "enlarge" then return end
local enlarged = self.enlarged
local expandUpwards = backportVersion and (enlarged and self.owner.options.ExpandUpwardsLarge or self.owner.options.ExpandUpwards) or self.owner.options.ExpandUpwards
local anchor = (self.prev and self.prev.frame) or (self.enlarged and self.owner.secAnchor) or self.owner.mainAnchor
self.frame:ClearAllPoints()
if expandUpwards then
self.frame:SetPoint("BOTTOM", anchor, "TOP", self.owner.options[enlarged and "HugeBarXOffset" or "BarXOffset"], self.owner.options[enlarged and "HugeBarYOffset" or "BarYOffset"])
else
self.frame:SetPoint("TOP", anchor, "BOTTOM", self.owner.options[enlarged and "HugeBarXOffset" or "BarXOffset"], -self.owner.options[enlarged and "HugeBarYOffset" or "BarYOffset"])
end
end
local function moveToNextPosition(self, oldX, oldY)
if self.moving == "enlarge" then return end
local enlarged = self.enlarged
local expandUpwards = backportVersion and (enlarged and self.owner.options.ExpandUpwardsLarge or self.owner.options.ExpandUpwards) or self.owner.options.ExpandUpwards
local newAnchor = (self.prev and self.prev.frame) or (self.enlarged and self.owner.secAnchor) or self.owner.mainAnchor
oldX = oldX or (self.frame:GetRight() - self.frame:GetWidth() / 2)
if expandUpwards then
oldY = oldY or self.frame:GetTop() + self.owner.options[enlarged and "HugeBarYOffset" or "BarYOffset"]
else
oldY = oldY or self.frame:GetTop() - self.owner.options[enlarged and "HugeBarYOffset" or "BarYOffset"]
end
self.frame:ClearAllPoints()
if expandUpwards then
self.movePoint = "BOTTOM"
self.moveRelPoint = "TOP"
self.frame:SetPoint("BOTTOM", newAnchor, "TOP", self.owner.options[enlarged and "HugeBarXOffset" or "BarXOffset"], self.owner.options[enlarged and "HugeBarYOffset" or "BarYOffset"])
else
self.movePoint = "TOP"
self.moveRelPoint = "BOTTOM"
self.frame:SetPoint("TOP", newAnchor, "BOTTOM", self.owner.options[enlarged and "HugeBarXOffset" or "BarXOffset"], -self.owner.options[enlarged and "HugeBarYOffset" or "BarYOffset"])
end
local newX = self.frame:GetRight() - self.frame:GetWidth() / 2
local newY = self.frame:GetTop()
self.moveAnchor = newAnchor
self.moveOffsetX = -(newX - oldX)
self.moveOffsetY = -(newY - oldY)
self.moveElapsed = 0
if self.owner.options.BarStyle ~= "NoAnim" then
self.frame:ClearAllPoints()
self.frame:SetPoint(self.movePoint, newAnchor, self.moveRelPoint, self.moveOffsetX, self.moveOffsetY)
self.moving = "move"
end
end
local function enlarge(self)
local newAnchor = (self.owner.hugeBars.last and self.owner.hugeBars.last.frame) or self.owner.secAnchor
local oldX = self.frame:GetRight() - self.frame:GetWidth() / 2
local oldY = self.frame:GetTop()
local enlarged = self.enlarged
local expandUpwards = backportVersion and (enlarged and self.owner.options.ExpandUpwardsLarge or self.owner.options.ExpandUpwards) or self.owner.options.ExpandUpwards
self.frame:ClearAllPoints()
if expandUpwards then
self.movePoint = "BOTTOM"
self.moveRelPoint = "TOP"
self.frame:SetPoint("BOTTOM", newAnchor, "TOP", self.owner.options[enlarged and "HugeBarXOffset" or "BarXOffset"], self.owner.options[enlarged and "HugeBarYOffset" or "BarYOffset"])
else
self.movePoint = "TOP"
self.moveRelPoint = "BOTTOM"
self.frame:SetPoint("TOP", newAnchor, "BOTTOM", self.owner.options[enlarged and "HugeBarXOffset" or "BarXOffset"], -self.owner.options[enlarged and "HugeBarYOffset" or "BarYOffset"])
end
local newX = self.frame:GetRight() - self.frame:GetWidth() / 2
local newY = self.frame:GetTop()
self.moving = self.owner.options.BarStyle == "NoAnim" and "nextEnlarge" or "enlarge"
self.moveAnchor = newAnchor
self.moveOffsetX = -(newX - oldX)
self.moveOffsetY = -(newY - oldY)
self.moveElapsed = 0
self.frame:ClearAllPoints()
self.frame:SetPoint("TOP", newAnchor, "BOTTOM", self.moveOffsetX, self.moveOffsetY)
end
local function animateEnlarge(self, elapsed)
self.moveElapsed = self.moveElapsed + elapsed
if self.moveElapsed < 1 then
local options = self.owner.options
local newX = self.moveOffsetX + (options.HugeBarXOffset - self.moveOffsetX) * (self.moveElapsed / 1)
local newY = self.moveOffsetY + (options.HugeBarYOffset - self.moveOffsetY) * (self.moveElapsed / 1)
local newWidth = options.Width + (options.HugeWidth - options.Width) * (self.moveElapsed / 1)
local newScale = options.Scale + (options.HugeScale - options.Scale) * (self.moveElapsed / 1)
self.frame:ClearAllPoints()
self.frame:SetPoint(self.movePoint, self.moveAnchor, self.moveRelPoint, newX, newY)
local db = E.db.addOnSkins
local width = newWidth
local iconHeight = db.dbmBarHeight * newScale
local height = (db.DBMSkinHalf and iconHeight / 3) or iconHeight
local fontSize = db.dbmFontSize * newScale
self.frame:Size(width, height)
self._bar:Size(width, height)
self._icon1.overlay:Size(iconHeight)
self._icon2.overlay:Size(iconHeight)
self._name:SetFont(self._font, fontSize, db.dbmFontOutline)
self._timer:SetFont(self._font, fontSize, db.dbmFontOutline)
else
self.moving = nil
self.enlarged = true
self.owner.hugeBars:Append(self)
self:ApplyStyle()
self:SetPosition()
end
end
if backportVersion2 then
hooksecurefunc(DBT, "CreateBar", skinBars)
else
S:SecureHook(DBT, "CreateBar", function(self)
local hooked
for bar in pairs(self.bars) do
if not hooked then
local mt = getmetatable(bar).__index
hooksecurefunc(mt, "ApplyStyle", applyStyle)
if not backportVersion then
S:Hook(mt, "Update", preUpdate)
end
mt.SetPosition = setPosition
mt.MoveToNextPosition = moveToNextPosition
mt.Enlarge = enlarge
mt.AnimateEnlarge = animateEnlarge
hooked = true
end
bar:ApplyStyle()
bar:SetPosition()
end
S:Unhook(DBT, "CreateBar")
end)
end
local function SkinBoss()
local db = E.db.addOnSkins
local count = 1
local bar = _G["DBM_BossHealth_Bar_" .. count]
local barName, background, progress, name, timer
local point1, anchor, point2
while bar do
point1, anchor, point2 = bar:GetPoint()
if not point1 then return end
barName = bar:GetName()
background = _G[barName .. "BarBorder"]
progress = _G[barName .. "Bar"]
name = _G[barName .. "BarName"]
timer = _G[barName .. "BarTimer"]
bar:ClearAllPoints()
bar:Height(db.dbmBarHeight)
bar:SetTemplate("Transparent")
background:SetNormalTexture(nil)
progress:SetStatusBarTexture(E.media.normTex)
progress:ClearAllPoints()
progress:SetInside(bar)
name:ClearAllPoints()
name:Point("LEFT", bar, "LEFT", 4, 0)
name:SetFont(E.LSM:Fetch("font", db.dbmFont), db.dbmFontSize, db.dbmFontOutline)
timer:ClearAllPoints()
timer:Point("RIGHT", bar, "RIGHT", -4, 0)
timer:SetFont(E.LSM:Fetch("font", db.dbmFont), db.dbmFontSize, db.dbmFontOutline)
if DBM.Options.HealthFrameGrowUp then
bar:Point(point1, anchor, point2, 0, count == 1 and 8 or 4)
else
bar:Point(point1, anchor, point2, 0, -(count == 1 and 8 or 4))
end
count = count + 1
bar = _G["DBM_BossHealth_Bar_" .. count]
end
end
hooksecurefunc(DBM.BossHealth, "Show", SkinBoss)
hooksecurefunc(DBM.BossHealth, "AddBoss", SkinBoss)
hooksecurefunc(DBM.BossHealth, "UpdateSettings", SkinBoss)
S:SecureHook(DBM.RangeCheck, "Show", function(self)
if not DBMRangeCheck then return end
DBMRangeCheck:SetTemplate("Transparent")
E:GetModule("Tooltip"):HookScript(DBMRangeCheck, "OnShow", "SetStyle")
S:Unhook(self, "Show")
end)
if backportVersion then
S:RawHook(DBM, "AddWarning", function(self, text, ...)
if find(text, " |T") then
text = gsub(text, "(:12:12)", ":18:18:0:0:64:64:5:59:5:59")
end
return S.hooks[DBM].AddWarning(self, text, ...)
end)
else
S:RawHook("RaidNotice_AddMessage", function(noticeFrame, textString, colorInfo)
if find(textString, " |T") then
textString = gsub(textString, "(:12:12)", ":18:18:0:0:64:64:5:59:5:59")
end
return S.hooks.RaidNotice_AddMessage(noticeFrame, textString, colorInfo)
end, true)
end
if DBM.ShowUpdateReminder then
S:SecureHook(DBM, "ShowUpdateReminder", function(self)
DBMUpdateReminder:SetTemplate("Transparent")
DBMUpdateReminder:EnableMouse(true)
local editBox, button = DBMUpdateReminder:GetChildren()
local left, right, middle = select(6, DBMUpdateReminder:GetChildren():GetRegions())
left:Hide()
right:Hide()
middle:Hide()
editBox:Height(22)
S:HandleEditBox(editBox)
S:HandleButton(button)
S:Unhook(self, "ShowUpdateReminder")
end)
end
end)
S:AddCallbackForAddon("DBM-GUI", "DBM-GUI", function()
if not E.private.addOnSkins.DBM then return end
local backportVersion2 = DBM.ReleaseRevision >= 20220412000000 -- 9.2.14
DBM_GUI_OptionsFrame:SetTemplate("Transparent")
DBM_GUI_OptionsFrameHeader:Point("TOP", 0, 7)
DBM_GUI_OptionsFrameHeader:Hide()
DBM_GUI_OptionsFramePanelContainer:SetTemplate("Transparent")
if backportVersion2 then
for i = 1, #DBM_GUI.tabs do -- can be variable
S:HandleTab(_G["DBM_GUI_OptionsFrameTab" .. i])
end
else
S:HandleTab(DBM_GUI_OptionsFrameTab1)
S:HandleTab(DBM_GUI_OptionsFrameTab2)
end
DBM_GUI_OptionsFrameTab1:Point("BOTTOMLEFT", backportVersion2 and DBM_GUI_OptionsFrameList or DBM_GUI_OptionsFrameBossMods, "TOPLEFT", 6, -4)
DBM_GUI_OptionsFrameTab1Text:SetPoint("CENTER", 0, 0)
DBM_GUI_OptionsFrameTab2Text:SetPoint("CENTER", 0, 0)
S:HandleScrollBar(DBM_GUI_OptionsFramePanelContainerFOVScrollBar)
DBM_GUI_OptionsFramePanelContainerFOVScrollBar:Point("TOPRIGHT", 18, -16)
DBM_GUI_OptionsFramePanelContainerFOVScrollBar:Point("BOTTOMRIGHT", 18, 14)
S:HandleButton(DBM_GUI_OptionsFrameOkay)
if DBM_GUI_OptionsFrameWebsiteButton then
S:HandleButton(DBM_GUI_OptionsFrameWebsiteButton)
end
if backportVersion2 then
for _, button in ipairs(DBM_GUI_OptionsFrameList.buttons) do
S:HandleCollapseTexture(button.toggle)
end
end
S:SecureHookScript(DBM_GUI_OptionsFrame, "OnShow", function(self)
if backportVersion2 then
DBM_GUI_OptionsFrameList:StripTextures()
DBM_GUI_OptionsFrameList:SetTemplate("Transparent")
S:HandleScrollBar(DBM_GUI_OptionsFrameListListScrollBar)
DBM_GUI_OptionsFrameListListScrollBar:Point("TOPRIGHT", 1, -18)
DBM_GUI_OptionsFrameListListScrollBar:Point("BOTTOMLEFT", 7, 18)
else
DBM_GUI_OptionsFrameBossMods:StripTextures()
DBM_GUI_OptionsFrameBossMods:SetTemplate("Transparent")
DBM_GUI_OptionsFrameBossModsList:StripTextures()
S:HandleScrollBar(DBM_GUI_OptionsFrameBossModsListScrollBar)
DBM_GUI_OptionsFrameBossModsListScrollBar:Point("TOPRIGHT", 1, -18)
DBM_GUI_OptionsFrameBossModsListScrollBar:Point("BOTTOMLEFT", 7, 18)
for _, button in ipairs(DBM_GUI_OptionsFrameBossMods.buttons) do
S:HandleCollapseExpandButton(button.toggle, "auto")
button.toggle:Point("TOPLEFT", 3, 0)
end
DBM_GUI_OptionsFrameDBMOptions:StripTextures()
DBM_GUI_OptionsFrameDBMOptions:SetTemplate("Transparent")
DBM_GUI_OptionsFrameDBMOptionsList:StripTextures()
S:HandleScrollBar(DBM_GUI_OptionsFrameDBMOptionsListScrollBar)
DBM_GUI_OptionsFrameDBMOptionsListScrollBar:Point("TOPRIGHT", 1, -18)
DBM_GUI_OptionsFrameDBMOptionsListScrollBar:Point("BOTTOMLEFT", 7, 18)
for _, button in ipairs(DBM_GUI_OptionsFrameDBMOptions.buttons) do
S:HandleCollapseExpandButton(button.toggle, "auto")
button.toggle:Point("TOPLEFT", 3, 0)
end
end
S:Unhook(self, "OnShow")
end)
--[[
hooksecurefunc(DBM_GUI_OptionsFrame, "DisplayButton", function(self, button, element)
button.toggle:Point("LEFT", 8 * element.depth - 5, 2);
end)
--]]
S:RawHook(DBM_GUI, "CreateNewPanel", function(self, ...)
local panel = S.hooks[DBM_GUI].CreateNewPanel(self, ...)
local PanelPrototype = getmetatable(panel).__index
hooksecurefunc(PanelPrototype, "CreateArea", function(this)
this.areas[#this.areas].frame:SetTemplate("Transparent", nil, true)
this.areas[#this.areas].frame:SetBackdropColor(0, 0, 0, 0)
end)
--[[
S:RawHook(PanelPrototype, "CreateCheckButton", function(this, name, autoplace, ...)
local button = S.hooks[PanelPrototype].CreateCheckButton(this, name, autoplace, ...)
if button then
S:HandleCheckBox(button, true)
if autoplace then
local _, lastObj = button:GetPoint()
if lastObj.mytype == "checkbutton" then
button:Point("TOPLEFT", lastObj, "BOTTOMLEFT", 0, -7)
end
end
return button
end
end)
S:RawHook(PanelPrototype, "CreateEditBox", function(this, ...)
local editbox = S.hooks[PanelPrototype].CreateEditBox(this, ...)
S:HandleEditBox(editbox)
return editbox
end)
S:RawHook(PanelPrototype, "CreateSlider", function(this, ...)
local slider = S.hooks[PanelPrototype].CreateSlider(this, ...)
S:HandleSliderFrame(slider)
return slider
end)
S:RawHook(PanelPrototype, "CreateButton", function(this, ...)
local button = S.hooks[PanelPrototype].CreateButton(this, ...)
S:HandleButton(button)
return button
end)
--]]
S:Unhook(DBM_GUI, "CreateNewPanel")
return panel
end)
--[[
DBM_GUI_DropDown:SetTemplate("Transparent")
local dropdownArrowColor = {1, 0.8, 0}
S:RawHook(DBM_GUI, "CreateDropdown", function(self, ...)
local dropdown = S.hooks[DBM_GUI].CreateDropdown(self, ...)
local frameName = dropdown:GetName()
local button = _G[frameName.."Button"]
local text = _G[frameName.."Text"]
dropdown:StripTextures()
dropdown:SetTemplate()
dropdown:Size(dropdown:GetWidth(), 20)
if button then
S:HandleNextPrevButton(button, "down", dropdownArrowColor)
button:ClearAllPoints()
button:Point("RIGHT", dropdown, "RIGHT", -3, 0)
button:Size(16)
end
if text then
text:ClearAllPoints()
text:Point("RIGHT", button, "LEFT", -3, 0)
end
return dropdown
end)
--]]
end)