From 8f1322d71c57fef034dced22fb9036395c9727de Mon Sep 17 00:00:00 2001
From: Brues <5278969+brues-code@users.noreply.github.com>
Date: Thu, 22 Oct 2026 23:34:08 -0500
Subject: [PATCH] Skin ClassicAPI's Interface Options frame and its option
controls
SkinCollapseButton's icon no longer takes the mouse, so clicks reach the button under it.
---
api/ui-widgets.lua | 1 +
init/skins.xml | 1 +
skins/blizzard/options-interface.lua | 49 ++++++++++++++++++++++++++++
3 files changed, 51 insertions(+)
create mode 100644 skins/blizzard/options-interface.lua
diff --git a/api/ui-widgets.lua b/api/ui-widgets.lua
index 082deff7..885026ca 100644
--- a/api/ui-widgets.lua
+++ b/api/ui-widgets.lua
@@ -683,6 +683,7 @@ function pfUI.api.SkinCollapseButton(button, all)
b.icon:SetSize(size, size)
b.icon:SetPoint("LEFT", 2, 2)
CreateBackdrop(b.icon)
+ b.icon:EnableMouse(false)
b.icon.text = b.icon:CreateFontString(nil, "OVERLAY")
b.icon.text:SetFontObject(GameFontWhite)
b.icon.text:SetPoint("CENTER", -1, 0)
diff --git a/init/skins.xml b/init/skins.xml
index 3d444b0d..1f418591 100644
--- a/init/skins.xml
+++ b/init/skins.xml
@@ -30,6 +30,7 @@
+
diff --git a/skins/blizzard/options-interface.lua b/skins/blizzard/options-interface.lua
new file mode 100644
index 00000000..16bb39a5
--- /dev/null
+++ b/skins/blizzard/options-interface.lua
@@ -0,0 +1,49 @@
+pfUI:RegisterSkin("Options - Interface", function ()
+ local rawborder, border = GetBorderSize()
+ local bpad = rawborder > 1 and border - GetPerfectPixel() or GetPerfectPixel()
+ local cr, cg, cb = PFUI_CLASS_COLORS[UnitClassBase("player")]:GetRGB()
+
+ StripTextures(InterfaceOptionsFrame)
+ CreateBackdrop(InterfaceOptionsFrame, nil, nil, .75)
+ CreateBackdropShadow(InterfaceOptionsFrame)
+
+ local title = GetNoNameObject(InterfaceOptionsFrame, "FontString", "ARTWORK", ADDON_OPTIONS)
+ title:ClearAllPoints()
+ title:SetPoint("TOP", InterfaceOptionsFrame, "TOP", 0, -10)
+
+ CreateBackdrop(InterfaceOptionsFrameAddOns, nil, true, .75)
+ CreateBackdrop(InterfaceOptionsFramePanelContainer, nil, true, .75)
+ SkinScrollbar(InterfaceOptionsFrameAddOnsListScrollBar)
+
+ for _, button in ipairs(InterfaceOptionsFrameAddOns.buttons) do
+ button:GetHighlightTexture():SetTexture(cr, cg, cb, .25)
+
+ -- the list update swaps plus/minus textures on the toggle by path
+ local toggle = _G[button:GetName() .. "Toggle"]
+ SkinCollapseButton(toggle)
+ toggle:SetPushedTexture("")
+ toggle:SetHighlightTexture("")
+ toggle.SetPushedTexture = function() end
+ end
+
+ -- ClassicAPI's own pages (Options\Panel.lua) number their controls
+ local i = 1
+ while _G["ClassicAPIOptionsControl" .. i] do
+ local control = _G["ClassicAPIOptionsControl" .. i]
+ local ctype = control:GetFrameType()
+ if ctype == "CheckButton" then
+ SkinCheckbox(control)
+ elseif ctype == "Slider" then
+ SkinSlider(control)
+ else
+ SkinDropDown(control, nil, nil, nil, true)
+ end
+ i = i + 1
+ end
+
+ SkinButton(InterfaceOptionsFrameDefaults)
+ SkinButton(InterfaceOptionsFrameCancel)
+ SkinButton(InterfaceOptionsFrameOkay)
+ InterfaceOptionsFrameOkay:ClearAllPoints()
+ InterfaceOptionsFrameOkay:SetPoint("RIGHT", InterfaceOptionsFrameCancel, "LEFT", -2*bpad, 0)
+end)