ui: the ClassicAPI-era templates addons inherit by name
`CreateFrame(): Couldn't find inherited node "DialogBorderOpaqueTemplate"` is where OpenMapClassic stopped — on its first file, inside Ace3, before a line of its own code ran. It is not that addon's problem: `BackdropTemplate` is named **unguarded** by Ace3 itself (`AceGUIContainer-Frame.lua:179` and `:206`, `AceGUIContainer-DropDownGroup.lua:128`), so every Ace3 addon on this install hits it. `assets/ui` does not grow, so this file carries its reason on that wall's own list: there is no stock 1.12 file to migrate from, because 1.12 has neither template. They are the same kind of surface as `script/compat/`'s verbs and live in XML only because `inherits=` is resolved by the loader and cannot be answered from Lua. **`BackdropTemplate` is correctly empty.** 9.0 moved the backdrop off the C side and invented `BackdropTemplateMixin` to put it back; 1.12 still has `SetBackdrop`/`GetBackdrop`/ `SetBackdropColor`/`SetBackdropBorderColor` as real frame methods, so a frame inheriting the template already answers all four. The mixin table exists for the `BackdropTemplateMixin and "BackdropTemplate" or nil` idiom and for `Mixin()`, its rows forwarding to the stock methods. **No getter rows**: a forwarding `GetBackdropColor` would call itself once `Mixin()` had written it onto the frame, and the stock one already answers. The dialog border is one `<Backdrop>` over this client's own dialog art — the shape every stock 1.12 dialog draws, and the same block `GameMenuFrame.xml` uses — rather than a transcription of Era's nine `SharedUIPanelTemplates.xml` textures. The opaque variant differs only in background alpha, which is the one thing the two names disagree about. `enableMouse` stays off: it is a decoration over a frame that handles its own input, and a border that ate clicks would make an Ace options window unusable. Movement: openmap `AceConfigDialog:573` → `:586`, now wanting `SetNormalFontObject`. Full chain green. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SgstFWtn1RxEJ5kVrpgYwn
This commit is contained in:
@@ -1974,6 +1974,13 @@ fn assets_ui_does_not_grow() {
|
||||
// falls through into `attempt to call local 'handledata'`. There is no stock file to
|
||||
// migrate — AIO is the realm's, not Blizzard's. The file's own header has the trace.
|
||||
"AIOHandlers.lua",
|
||||
// Not a window either: the ClassicAPI-era FrameXML templates addons inherit by name,
|
||||
// which have no stock 1.12 file to migrate from because 1.12 has no such templates. They
|
||||
// live in XML rather than `script/compat/` only because `inherits=` is resolved by the
|
||||
// loader and cannot be answered from Lua. Ace3 names two of them **unguarded**, so a
|
||||
// missing one raises inside the library: `CreateFrame(): Couldn't find inherited node
|
||||
// "DialogBorderOpaqueTemplate"` is where OpenMapClassic stopped, on its first file.
|
||||
"CompatTemplates.xml",
|
||||
"ContainerFrameAdapters.xml",
|
||||
"GameMenuFrame.xml",
|
||||
"KeyBindingsPage.xml",
|
||||
|
||||
Reference in New Issue
Block a user