Skip to content

Fix Aura Designer settings not applying to live frames without /reload#45

Closed
Krathe82 wants to merge 1 commit into
DanderBot:mainfrom
Krathe82:fix/ad-settings-not-applying-to-live-frames
Closed

Fix Aura Designer settings not applying to live frames without /reload#45
Krathe82 wants to merge 1 commit into
DanderBot:mainfrom
Krathe82:fix/ad-settings-not-applying-to-live-frames

Conversation

@Krathe82
Copy link
Copy Markdown
Contributor

@Krathe82 Krathe82 commented May 5, 2026

Problem

Multiple Aura Designer settings work correctly in the preview window but have no effect on live party/raid frames until the UI is reloaded:

  • Fill color
  • Border on/off, border thickness, border color
  • Color Bar by Duration (expiring)
  • Show Duration Text
  • Hide Duration Above Threshold
  • Color Duration by Time

Root Cause

Every Aura Designer setting is written via a proxy table. All three proxy __newindex\ handlers (CreateInstanceProxy, CreateProxy, CreateAuraProxy) save the value to the DB and call \RefreshPreviewLightweight()\ — which only updates the mock preview frame. Live unit frames were never notified of the change, so they kept running with stale config until the next /reload.

The various explicit \Engine:ForceRefreshAllFrames()\ calls scattered through Options.lua only cover a handful of specific controls (e.g. toggling AD on/off, changing aura source). All the per-indicator settings go through the proxy path and were missing the live-frame refresh entirely.

Fix

Add \RefreshLiveFramesThrottled()\ — a 100ms debounced wrapper around \Engine:ForceRefreshAllFrames()\ — and call it from all three proxy __newindex\ handlers alongside the existing \RefreshPreviewLightweight()\ call.

The 100ms debounce prevents slider drag ticks from spamming \ForceRefreshAllFrames()\ on every pixel of movement, while still applying the final value promptly when the user stops dragging.

Every setting change in the Aura Designer UI writes to the saved DB via a
proxy __newindex, then calls RefreshPreviewLightweight() — which only updates
the mock preview frame. Live party/raid frames were never notified, so changes
to fill color, border, expiring, duration text, and related settings had no
effect until the UI was reloaded.

Add RefreshLiveFramesThrottled() — a 100ms debounced wrapper around
ForceRefreshAllFrames() — and call it from all three proxy __newindex
handlers (CreateInstanceProxy, CreateProxy, CreateAuraProxy). The debounce
prevents slider drag ticks from spamming ForceRefreshAllFrames on every tick
while still applying the final value promptly.

Fixes: fill color, border on/off/thickness/color, Color Bar by Duration,
Show Duration Text, Hide Duration Above Threshold, Color Duration by Time.
@DanderBot
Copy link
Copy Markdown
Owner

Thanks for the PR! Squashed and merged into main as 4bbcd5f — shipping in v4.3.7-alpha.5.

@DanderBot DanderBot closed this May 7, 2026
@Krathe82 Krathe82 deleted the fix/ad-settings-not-applying-to-live-frames branch June 4, 2026 12:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants