diff --git a/ElvUI_SLE/defaults/profile.lua b/ElvUI_SLE/defaults/profile.lua
index 7e737e9..e1d3044 100644
--- a/ElvUI_SLE/defaults/profile.lua
+++ b/ElvUI_SLE/defaults/profile.lua
@@ -437,6 +437,7 @@ P['sle'] = {
['enable'] = false,
['size'] = 17,
['mouse'] = false,
+ ['dropdownBackdrop'] = false,
['position'] = "uib_vert",
['spacing'] = 3,
['point'] = "TOPLEFT",
diff --git a/ElvUI_SLE/locales/russian.lua b/ElvUI_SLE/locales/russian.lua
index 0acaa6f..2218573 100644
--- a/ElvUI_SLE/locales/russian.lua
+++ b/ElvUI_SLE/locales/russian.lua
@@ -443,6 +443,7 @@ L["Additional menu with useful buttons"] = "Дополнительное мен
L["Show/Hide UI buttons."] = "Показать/скрыть меню"
L["Mouse Over"] = "При наведении"
L["Show on mouse over."] = "Отображать при наведении мыши."
+L["Dropdown Backdrop"] = "Фон выпадающего списка"
L["Buttons position"] = "Положение кнопок"
L["Layout for UI buttons."] = "Режим положения кнопок"
L["Click to reload your interface"] = "Нажмите для перезагрузки интерфейса"
diff --git a/ElvUI_SLE/modules/uibuttons.lua b/ElvUI_SLE/modules/uibuttons.lua
index 55372dc..9facf47 100644
--- a/ElvUI_SLE/modules/uibuttons.lua
+++ b/ElvUI_SLE/modules/uibuttons.lua
@@ -67,18 +67,22 @@ function UB:CreateFrame()
}
else
UB.menuHolder.Config = CreateFrame("Frame", "SLEUIConfigHolder", UB.menuHolder)
+ UB.menuHolder.Config:CreateBackdrop("Transparent")
UB:CreateCoreButton("Config", "C")
UB:ConfigSetup()
UB.menuHolder.Addon = CreateFrame("Frame", "SLEUIAddonHolder", UB.menuHolder)
+ UB.menuHolder.Addon:CreateBackdrop("Transparent")
UB:CreateCoreButton("Addon", "A")
UB:AddonSetup()
UB.menuHolder.Status = CreateFrame("Frame", "SLEUIStatusHolder", UB.menuHolder)
+ UB.menuHolder.Status:CreateBackdrop("Transparent")
UB:CreateCoreButton("Status", "S")
UB:StatusSetup()
UB.menuHolder.Roll = CreateFrame("Frame", "SLEUIRollHolder", UB.menuHolder)
+ UB.menuHolder.Roll:CreateBackdrop("Transparent")
UB:CreateCoreButton("Roll", "R")
UB:RollSetup()
@@ -135,17 +139,12 @@ local E = ElvUI[1]
local UB = E:GetModule('SLE_UIButtons');
local function MyButtonInsert()
UB:CreateDropdownButton(always, parent, name, text, tooltip1, tooltip2, click, addon)
- tinsert(<TableName>, UB.menuHolder[parent][name])
end
hooksecurefunc(UB, "InsertButtons", MyButtonInsert)
You can have as many buttons created inside your function as you want.
-TableName can be one of four tables:
-UB.ConfigTable
-UB.AddonTable
-UB.StatusTable
-UB.RollTable
]]
+
function UB:CreateDropdownButton(always, parent, name, text, tooltip1, tooltip2, click, addon)
if type(always) ~= "boolean" then
SLE:Print(format("You function contains unappropriate type for 1st argument \""..E["media"].hexvaluecolor.."always|r\" in function "..E["media"].hexvaluecolor.."UB:CreateDropdownButton|r. Your type is "..E["media"].hexvaluecolor.."%s|r (should be \"boolean\"). Parent: "..E["media"].hexvaluecolor.."%s|r. Name: "..E["media"].hexvaluecolor.."%s|r", type(always), parent, name))
@@ -239,7 +238,7 @@ function UB:CreateSeparator(parent, name, size, space)
f.shown = true
f.size = size or 1
f.space = space or 2
- f:CreateBackdrop()
+ f:CreateBackdrop("Transparent")
tinsert(UB[parent.."Table"], f)
end
@@ -464,7 +463,7 @@ function UB:MoverSize()
end
end
-function UB:FrameSize(onLoad)
+function UB:FrameSize()
local db = E.db.sle.uibuttons
if not db.size then return end
UB:MoverSize()
@@ -475,7 +474,7 @@ function UB:FrameSize(onLoad)
if E.private.sle.uiButtonStyle == "dropdown" then
for i = 1, #UB.MetaTable do
- local group = UB.MetaTable[i].group
+ local group = UB.MetaTable[i]
local mass = UB[group.."Table"]
for n = 1, #mass do
if mass[n].isSeparator then
@@ -487,61 +486,54 @@ function UB:FrameSize(onLoad)
end
end
- UB:Positioning(onLoad)
+ UB:Positioning()
end
-function UB:UpdateDropdownLayout(load, group, backdrop)
+function UB:UpdateDropdownLayout(group, backdrop)
local count = -1
local sepS, sepC = 0, 0
local header = UB.menuHolder[group]
local db = E.db.sle.uibuttons
header:ClearAllPoints()
header:Point(db.point, header.Toggle, db.anchor, db.xoffset, db.yoffset)
- if load then
- local T = UB[group.."Table"]
- for i = 1, #T do
- local button, prev, next = T[i], T[i-1], T[i+1]
- local y_offset = prev and ((E.PixelMode and -db.spacing or -(db.spacing+2))-(prev.isSeparator and prev.space or 0)-(button.isSeparator and button.space or 0)) or 0
- button:Point("TOP", (prev or header), (prev and "BOTTOM" or "TOP"), 0, y_offset)
- count = button.isSeparator and count or count + 1
- sepS = (button.isSeparator and sepS + ((prev and 2 or 1)*button.space + button.size)) or sepS
- sepC = button.isSeparator and sepC + 1 or sepC
- end
- if backdrop then
- header:CreateBackdrop("Transparent")
- end
+ local T = UB[group.."Table"]
+ for i = 1, #T do
+ local button, prev, next = T[i], T[i-1], T[i+1]
+ local y_offset = prev and ((E.PixelMode and -db.spacing or -(db.spacing+2))-(prev.isSeparator and prev.space or 0)-(button.isSeparator and button.space or 0)) or 0
+ button:Point("TOP", (prev or header), (prev and "BOTTOM" or "TOP"), 0, y_offset)
+ count = button.isSeparator and count or count + 1
+ sepS = (button.isSeparator and sepS + ((prev and 2 or 1)*button.space + button.size)) or sepS
+ sepC = button.isSeparator and sepC + 1 or sepC
end
header:Size(db.size * 3.1, (db.size * (count+1))+(db.spacing*(count))+sepS+(.5*sepC))
+ if backdrop then
+ header.backdrop:Show()
+ else
+ header.backdrop:Hide()
+ end
end
-function UB:Positioning(load)
+function UB:Positioning()
local db = E.db.sle.uibuttons
- for i = 1, #UB.ToggleTable do
- UB.ToggleTable[i]:ClearAllPoints()
- end
+
--position check
+ local header = UB.menuHolder
if db.position == "uib_vert" then
- if E.private.sle.uiButtonStyle == "dropdown" then
- UB.menuHolder.Config.Toggle:Point("TOP", UB.menuHolder, "TOP", 0, (E.PixelMode and -1 or -2))
- else
- UB.menuHolder.Config:Point("TOP", UB.menuHolder, "TOP", 0, (E.PixelMode and -1 or -2))
- end
- for i = 2, #UB.ToggleTable do
- UB.ToggleTable[i]:Point("TOP", UB.ToggleTable[i-1], "BOTTOM", 0, (E.PixelMode and -db.spacing or -(db.spacing+2)))
+ for i = 1, #UB.ToggleTable do
+ local button, prev = UB.ToggleTable[i], UB.ToggleTable[i-1]
+ UB.ToggleTable[i]:ClearAllPoints()
+ UB.ToggleTable[i]:Point("TOP", (prev or header), prev and "BOTTOM" or "TOP", 0, prev and (E.PixelMode and -db.spacing or -(db.spacing+2)) or (E.PixelMode and -1 or -2))
end
else
- if E.private.sle.uiButtonStyle == "dropdown" then
- UB.menuHolder.Config.Toggle:Point("LEFT", UB.menuHolder, "LEFT", (E.PixelMode and 1 or 2), 0)
- else
- UB.menuHolder.Config:Point("LEFT", UB.menuHolder, "LEFT", (E.PixelMode and 1 or 2), 0)
- end
- for i = 2, #UB.ToggleTable do
- UB.ToggleTable[i]:Point("LEFT", UB.ToggleTable[i-1], "RIGHT", (E.PixelMode and db.spacing or db.spacing+2), 0)
+ for i = 1, #UB.ToggleTable do
+ local button, prev = UB.ToggleTable[i], UB.ToggleTable[i-1]
+ UB.ToggleTable[i]:ClearAllPoints()
+ UB.ToggleTable[i]:Point("LEFT", (prev or header), prev and "RIGHT" or "LEFT", prev and (E.PixelMode and db.spacing or db.spacing+2) or (E.PixelMode and 1 or 2), 0)
end
end
if E.private.sle.uiButtonStyle == "dropdown" then
for i = 1, #UB.MetaTable do
- UB:UpdateDropdownLayout(load, UB.MetaTable[i].group, UB.MetaTable[i].back)
+ UB:UpdateDropdownLayout(UB.MetaTable[i], E.db.sle.uibuttons.dropdownBackdrop)
end
end
end
@@ -558,22 +550,10 @@ end
function UB:CreateMetaTable()
if E.private.sle.uiButtonStyle ~= "dropdown" then return end
UB.MetaTable = {
- [1] = {
- group = "Config",
- back = true,
- },
- [2] = {
- group = "Addon",
- back = true,
- },
- [3] = {
- group = "Status",
- back = false,
- },
- [4] = {
- group = "Roll",
- back = false,
- },
+ "Config",
+ "Addon",
+ "Status",
+ "Roll",
}
end
@@ -588,7 +568,7 @@ function UB:Initialize()
UB:CreateMetaTable()
- UB:FrameSize(true)
+ UB:FrameSize()
UB:Toggle()
E.FrameLocks['SLEUIButtonHolder'] = true
diff --git a/ElvUI_SLE/options/uibuttons_c.lua b/ElvUI_SLE/options/uibuttons_c.lua
index 739386f..50266d5 100644
--- a/ElvUI_SLE/options/uibuttons_c.lua
+++ b/ElvUI_SLE/options/uibuttons_c.lua
@@ -83,6 +83,14 @@ local function configTable()
get = function(info) return E.db.sle.uibuttons.mouse end,
set = function(info, value) E.db.sle.uibuttons.mouse = value; UB:UpdateMouseOverSetting() end
},
+ dropdownBackdrop = {
+ order = 8,
+ type = "toggle",
+ name = L["Dropdown Backdrop"],
+ disabled = function() return not E.db.sle.uibuttons.enable or E.private.sle.uiButtonStyle == "classic" end,
+ get = function(info) return E.db.sle.uibuttons.dropdownBackdrop end,
+ set = function(info, value) E.db.sle.uibuttons.dropdownBackdrop = value; UB:FrameSize() end
+ },
position = {
order = 10,
name = L["Buttons position"],