File Details
050
- R
- May 2, 2026
- 111.76 KB
- 5
- 12.0.5
- Retail
File Name
BazWidgetDrawers-050.zip
Supported Versions
- 12.0.5
BazWidgetDrawers
050 (2026-05-02)
Full Changelog Previous Releases
- BazWidgetDrawers v050 - Combat-deferred WidgetHost reflow. Fixes ADDON_ACTION_BLOCKED errors when a dormant widget transitions during combat. The trace was: dormant widget condition flips during combat -> LBW callback fires -> WidgetHost:Reflow runs -> Reflow tries to DisableWidget on a different widget whose frame parents secure children (BazWidgets Trinket Tracker uses SecureActionButtonTemplate buttons inside its widget frame) -> widget.frame:Hide() called on a frame containing protected children -> taint system blocks the call. Solution is to defer all structural mutations until PLAYER_REGEN_ENABLED. New self._combatWatcher event frame in WidgetHost:Initialize listens for PLAYER_REGEN_ENABLED and replays any deferred work in order: pending Reflow runs first, then queued DisableWidget calls, then queued Float/Dock calls. The mutation entry points - Reflow, DisableWidget, FloatWidget, DockWidget - each check InCombatLockdown at the top and either set self._reflowPending = true and return, or push themselves into self._pendingDisable / self._pendingFloat lists for the watcher to flush. Cosmetic refreshes (titlebar text, status text, slot:Show on already-shown frames) keep working during combat - only structural changes that touch protected children are deferred. The trinket tracker widget itself was the original blame target because its widget.frame is the parent of two SecureActionButtonTemplate slot buttons; that's an inherent constraint of how that widget works (click-safe trinket use), not a bug in BWD - so we fix the blast radius at the host instead. No behavior changes outside combat, bump to 050

