Bugfixes: removed hard nil val checks from toolkit.lua fixed few mismatches causing crashes

This commit is contained in:
Bluewhale1337
2026-07-25 00:42:46 +02:00
parent c51cfa3f73
commit 94872c5a17
5 changed files with 140 additions and 80 deletions
+113 -72
View File
@@ -225,14 +225,22 @@ local function LoadSkin()
end
-- if a button position is not really where we want, we move it here
OptionsFrameCancel:ClearAllPoints()
E:Point(OptionsFrameCancel, "BOTTOMLEFT",OptionsFrame,"BOTTOMRIGHT",-105,15)
OptionsFrameOkay:ClearAllPoints()
E:Point(OptionsFrameOkay, "RIGHT",OptionsFrameCancel,"LEFT",-4,0)
SoundOptionsFrameOkay:ClearAllPoints()
E:Point(SoundOptionsFrameOkay, "RIGHT",SoundOptionsFrameCancel,"LEFT",-4,0)
UIOptionsFrameOkay:ClearAllPoints()
E:Point(UIOptionsFrameOkay, "RIGHT",UIOptionsFrameCancel,"LEFT", -4,0)
if OptionsFrameCancel then
OptionsFrameCancel:ClearAllPoints()
E:Point(OptionsFrameCancel, "BOTTOMLEFT",OptionsFrame,"BOTTOMRIGHT",-105,15)
end
if OptionsFrameOkay and OptionsFrameCancel then
OptionsFrameOkay:ClearAllPoints()
E:Point(OptionsFrameOkay, "RIGHT",OptionsFrameCancel,"LEFT",-4,0)
end
if SoundOptionsFrameOkay and SoundOptionsFrameCancel then
SoundOptionsFrameOkay:ClearAllPoints()
E:Point(SoundOptionsFrameOkay, "RIGHT",SoundOptionsFrameCancel,"LEFT",-4,0)
end
if UIOptionsFrameOkay and UIOptionsFrameCancel then
UIOptionsFrameOkay:ClearAllPoints()
E:Point(UIOptionsFrameOkay, "RIGHT",UIOptionsFrameCancel,"LEFT", -4,0)
end
-- others
ZoneTextFrame:ClearAllPoints()
@@ -261,12 +269,14 @@ local function LoadSkin()
S:HandleSliderFrame(OpacityFrameSlider)
-- Interface Options
UIOptionsFrame:SetParent(E.UIParent)
UIOptionsFrame:EnableMouse(false)
if UIOptionsFrame then
UIOptionsFrame:SetParent(E.UIParent)
UIOptionsFrame:EnableMouse(false)
hooksecurefunc("UIOptionsFrame_Load", function()
E:StripTextures(UIOptionsFrame)
end)
hooksecurefunc("UIOptionsFrame_Load", function()
E:StripTextures(UIOptionsFrame)
end)
end
local UIOptions = {
"BasicOptions",
@@ -286,52 +296,62 @@ local function LoadSkin()
E:SetTemplate(options, "Transparent")
end
BasicOptions.backdrop = CreateFrame("Frame", nil, BasicOptions)
E:Point(BasicOptions.backdrop, "TOPLEFT", BasicOptionsGeneral, -20, 35)
E:Point(BasicOptions.backdrop, "BOTTOMRIGHT", BasicOptionsHelp, 20, -130)
E:SetTemplate(BasicOptions.backdrop, "Transparent")
if BasicOptions and BasicOptionsGeneral and BasicOptionsHelp then
BasicOptions.backdrop = CreateFrame("Frame", nil, BasicOptions)
E:Point(BasicOptions.backdrop, "TOPLEFT", BasicOptionsGeneral, -20, 35)
E:Point(BasicOptions.backdrop, "BOTTOMRIGHT", BasicOptionsHelp, 20, -130)
E:SetTemplate(BasicOptions.backdrop, "Transparent")
end
AdvancedOptions.backdrop = CreateFrame("Frame", nil, AdvancedOptions)
E:Point(AdvancedOptions.backdrop, "TOPLEFT", BasicOptionsGeneral, -20, 35)
E:Point(AdvancedOptions.backdrop, "BOTTOMRIGHT", BasicOptionsHelp, 20, -130)
E:SetTemplate(AdvancedOptions.backdrop, "Transparent")
if AdvancedOptions and BasicOptionsGeneral and AdvancedOptionsCombatText then
AdvancedOptions.backdrop = CreateFrame("Frame", nil, AdvancedOptions)
E:Point(AdvancedOptions.backdrop, "TOPLEFT", BasicOptionsGeneral, -20, 35)
E:Point(AdvancedOptions.backdrop, "BOTTOMRIGHT", AdvancedOptionsCombatText, 20, -130)
E:SetTemplate(AdvancedOptions.backdrop, "Transparent")
end
for i = 1, 2 do
local tab = _G["UIOptionsFrameTab"..i]
E:StripTextures(tab, true)
E:CreateBackdrop(tab, "Transparent")
if tab then
E:StripTextures(tab, true)
E:CreateBackdrop(tab, "Transparent")
tab:SetFrameLevel(tab:GetParent():GetFrameLevel() + 2)
tab.backdrop:SetFrameLevel(tab:GetParent():GetFrameLevel() + 1)
tab:SetFrameLevel(tab:GetParent():GetFrameLevel() + 2)
tab.backdrop:SetFrameLevel(tab:GetParent():GetFrameLevel() + 1)
E:Point(tab.backdrop, "TOPLEFT", 5, E.PixelMode and -14 or -16)
E:Point(tab.backdrop, "BOTTOMRIGHT", -5, E.PixelMode and -4 or -6)
E:Point(tab.backdrop, "TOPLEFT", 5, E.PixelMode and -14 or -16)
E:Point(tab.backdrop, "BOTTOMRIGHT", -5, E.PixelMode and -4 or -6)
tab:SetScript("OnClick", function()
PanelTemplates_Tab_OnClick(UIOptionsFrame)
if AdvancedOptions:IsShown() then
BasicOptions:Show()
AdvancedOptions:Hide()
else
BasicOptions:Hide()
AdvancedOptions:Show()
end
PlaySound("igCharacterInfoTab")
end)
tab:SetScript("OnClick", function()
PanelTemplates_Tab_OnClick(UIOptionsFrame)
if AdvancedOptions:IsShown() then
BasicOptions:Show()
AdvancedOptions:Hide()
else
BasicOptions:Hide()
AdvancedOptions:Show()
end
PlaySound("igCharacterInfoTab")
end)
HookScript(tab, "OnEnter", S.SetModifiedBackdrop)
HookScript(tab, "OnLeave", S.SetOriginalBackdrop)
end
for _, child in ipairs({UIOptionsFrame:GetChildren()}) do
if child.GetPushedTexture and child:GetPushedTexture() and not child:GetName() then
child:SetFrameLevel(UIOptionsFrame:GetFrameLevel() + 2)
S:HandleCloseButton(child, UIOptionsFrame.backdrop)
HookScript(tab, "OnEnter", S.SetModifiedBackdrop)
HookScript(tab, "OnLeave", S.SetOriginalBackdrop)
end
end
OptionsFrameDefaults:ClearAllPoints()
E:Point(OptionsFrameDefaults, "TOPLEFT", OptionsFrame, "BOTTOMLEFT", 15, 36)
if UIOptionsFrame then
for _, child in ipairs({UIOptionsFrame:GetChildren()}) do
if child.GetPushedTexture and child:GetPushedTexture() and not child:GetName() then
child:SetFrameLevel(UIOptionsFrame:GetFrameLevel() + 2)
S:HandleCloseButton(child, UIOptionsFrame.backdrop)
end
end
end
if OptionsFrameDefaults then
OptionsFrameDefaults:ClearAllPoints()
E:Point(OptionsFrameDefaults, "TOPLEFT", OptionsFrame, "BOTTOMLEFT", 15, 36)
end
S:HandleButton(UIOptionsFrameResetTutorials)
@@ -368,48 +388,69 @@ local function LoadSkin()
end
-- Interface Options Checkboxes
for _, value in UIOptionsFrameCheckButtons do
local UIOptionsFrameCheckBox = _G["UIOptionsFrameCheckButton"..value.index]
if value.index == 7 then
E:Kill(UIOptionsFrameCheckBox)
end
if value.index == 8 then
E:Point(UIOptionsFrameCheckBox, "TOPLEFT", 10, -8)
end
if UIOptionsFrameCheckBox then
S:HandleCheckBox(UIOptionsFrameCheckBox)
if type(UIOptionsFrameCheckButtons) == "table" then
for _, value in pairs(UIOptionsFrameCheckButtons) do
local index = type(value) == "table" and value.index or value
local UIOptionsFrameCheckBox = _G["UIOptionsFrameCheckButton"..index]
if index == 7 and UIOptionsFrameCheckBox then
E:Kill(UIOptionsFrameCheckBox)
end
if index == 8 and UIOptionsFrameCheckBox then
E:Point(UIOptionsFrameCheckBox, "TOPLEFT", 10, -8)
end
if UIOptionsFrameCheckBox then
S:HandleCheckBox(UIOptionsFrameCheckBox)
end
end
end
-- Video Options Checkboxes
for _, value in OptionsFrameCheckButtons do
local OptionsFrameCheckButton = _G["OptionsFrameCheckButton"..value.index]
if OptionsFrameCheckButton then
S:HandleCheckBox(OptionsFrameCheckButton)
if type(OptionsFrameCheckButtons) == "table" then
for _, value in pairs(OptionsFrameCheckButtons) do
local index = type(value) == "table" and value.index or value
local OptionsFrameCheckButton = _G["OptionsFrameCheckButton"..index]
if OptionsFrameCheckButton then
S:HandleCheckBox(OptionsFrameCheckButton)
end
end
end
-- Sound Options Checkboxes
for _, value in SoundOptionsFrameCheckButtons do
local SoundOptionsFrameCheckButton = _G["SoundOptionsFrameCheckButton"..value.index]
if SoundOptionsFrameCheckButton then
S:HandleCheckBox(SoundOptionsFrameCheckButton)
if type(SoundOptionsFrameCheckButtons) == "table" then
for _, value in pairs(SoundOptionsFrameCheckButtons) do
local index = type(value) == "table" and value.index or value
local SoundOptionsFrameCheckButton = _G["SoundOptionsFrameCheckButton"..index]
if SoundOptionsFrameCheckButton then
S:HandleCheckBox(SoundOptionsFrameCheckButton)
end
end
end
-- Interface Options Sliders
for i in UIOptionsFrameSliders do
S:HandleSliderFrame(_G["UIOptionsFrameSlider"..i])
if type(UIOptionsFrameSliders) == "table" then
for _, value in pairs(UIOptionsFrameSliders) do
local index = type(value) == "table" and value.index or value
local slider = _G["UIOptionsFrameSlider"..index]
if slider then S:HandleSliderFrame(slider) end
end
end
-- Video Options Sliders
for i in OptionsFrameSliders do
S:HandleSliderFrame(_G["OptionsFrameSlider"..i])
if type(OptionsFrameSliders) == "table" then
for _, value in pairs(OptionsFrameSliders) do
local index = type(value) == "table" and value.index or value
local slider = _G["OptionsFrameSlider"..index]
if slider then S:HandleSliderFrame(slider) end
end
end
-- Sound Options Sliders
for i in SoundOptionsFrameSliders do
S:HandleSliderFrame(_G["SoundOptionsFrameSlider"..i])
if type(SoundOptionsFrameSliders) == "table" then
for _, value in pairs(SoundOptionsFrameSliders) do
local index = type(value) == "table" and value.index or value
local slider = _G["SoundOptionsFrameSlider"..index]
if slider then S:HandleSliderFrame(slider) end
end
end
end