fix(libs): pick up coa-ace3 3ec2009 (BlizOptionsGroup + Settings.* CoA-compat)

Re-sync after coa-ace3 3ec2009 added two CoA-compat patches:
  - AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua: parent
    falls back to UIParent when InterfaceOptionsFramePanelContainer is nil
  - AceConfig-3.0/AceConfigDialog-3.0: Settings.* block guarded with
    fallback to InterfaceOptions_AddCategory on WotLK-era clients

Without these, every addon registering a Blizzard Interface Options
panel via AceConfigDialog errors on load on the CoA client.
This commit is contained in:
2026-05-24 17:41:24 +02:00
parent 6b767a1e7a
commit 92c6afd9c2
2 changed files with 34 additions and 21 deletions
@@ -2014,6 +2014,11 @@ function AceConfigDialog:AddToBlizOptions(appName, name, parent, ...)
group:SetCallback("OnHide", ClearBlizPanel)
local categoryName = name or appName
-- CoA-compat: the Settings.* API (GetCategory / RegisterCanvasLayoutCategory /
-- RegisterCanvasLayoutSubcategory / RegisterAddOnCategory) is a retail-only
-- (Dragonflight+) replacement for the WotLK-era InterfaceOptions_AddCategory.
-- On the 3.3.5-based CoA client Settings is nil, so fall back to the legacy API.
if Settings and Settings.GetCategory then
if parent then
local parentID = BlizOptionsIDMap[parent] or parent
local category = Settings.GetCategory(parentID)
@@ -2037,6 +2042,10 @@ function AceConfigDialog:AddToBlizOptions(appName, name, parent, ...)
BlizOptionsIDMap[categoryName] = category.ID
Settings.RegisterAddOnCategory(category)
end
else
group:SetName(name or appName, parent)
InterfaceOptions_AddCategory(group.frame)
end
return group.frame, group.frame.name
else
@@ -99,7 +99,11 @@ local methods = {
Constructor
-------------------------------------------------------------------------------]]
local function Constructor()
local frame = CreateFrame("Frame", nil, InterfaceOptionsFramePanelContainer)
-- CoA-compat: InterfaceOptionsFramePanelContainer is a global from the stock 3.3.5
-- Interface Options frame; on the CoA reworked FrameXML it can be nil at the time
-- AceGUI widgets are constructed. Fall back to UIParent so CreateFrame doesn't blow up.
local _parent = InterfaceOptionsFramePanelContainer or UIParent
local frame = CreateFrame("Frame", nil, _parent)
frame:Hide()
-- support functions for the Blizzard Interface Options