Repository navigation
v2026.4.10.2
·
3 commits
to main
since this release
HeadsUpCDM
v2026.4.10.2 (2026-04-10)
Full Changelog Previous Releases
- fix: restore-to-stock-parent crashes on spec switch (#11)
The do-restore snippet was calling b:SetParent(p) where p was the
ActionButton's original Blizzard bar (MultiBarBottomRight, etc.),
captured via btn:GetParent() at file-load time. In WoW 12.0's
restricted execution environment these stock bar frames are protected
but not "explicitly protected" for SetParent targeting, so the
restricted env rejects the unwrapped handle and throws:
RestrictedFrames.lua:622: Invalid frame handle for SetParent
This fired on the first spec switch (RebuildDisplay -> TeardownDisplay
-> DestroyActionColumn -> SetAttribute("do-restore", ...)).
Cross-checked EllesmereUI: it never restores to stock bar parents and
only SetParents to frames it owns (hiddenParent, UIParent). Strong
evidence that "restore to stock parent" is not a viable pattern in
12.0's restricted env.
Fix: change do-restore to just Hide() the buttons. They remain parented
to UIParent (where do-setup put them) in a neutral hidden state. The
next spec's do-setup repositions and Shows whichever buttons the new
spec needs. Drops the origParents cache and orig-N frame refs entirely
since they served no other purpose.
Trade-off: on addon disable without /reload, buttons used by the active
spec stay hidden on the bar until reload (they don't return to stock
positions). Previously they also didn't return — the restore simply
crashed. Spec switches (the common case) are fully fixed.
Co-authored-by: Claude Opus 4.6 (1M context) noreply@anthropic.com