Skip to content

feat(actionbars): add a Hide option for the proc glow - #1089

Open
dfrisone wants to merge 1 commit into
EllesmereGaming:mainfrom
dfrisone:actionbar-hide-proc-glow
Open

feat(actionbars): add a Hide option for the proc glow#1089
dfrisone wants to merge 1 commit into
EllesmereGaming:mainfrom
dfrisone:actionbar-hide-proc-glow

Conversation

@dfrisone

@dfrisone dfrisone commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Problem

There is no way to turn the proc glow off.

The Custom Proc Glow dropdown can replace Blizzard's gold proc glow with a different style, but never suppress it. Its "None" entry means "do not customise", so selecting it leaves Blizzard's own glow fully in place. It reads like an off switch that turns nothing off, and players who simply do not want a glow on their buttons have no option.

Fix

Adds a Hide style to the Custom Proc Glow dropdown.

{ name = "Hide", hide = true } is appended last in LOOP_GLOW_TYPES deliberately: procGlowType is stored by index, so inserting anywhere else would silently reassign every existing player's chosen style.

Handled in UpdateFlipbook before the custom-shape force, because that force decides HOW a glow is drawn and must not resurrect one the player asked not to see.

Only the visual is suppressed. _procState.active still tracks the button, so the assisted-highlight rescan and the glow rescan that read proc state stay correct. Both surfaces are covered (our glow wrapper and Blizzard's SpellActivationAlert), with alpha 0 as well as Hide() on the latter, because Blizzard re-Shows its own region on the next proc and alpha survives that.

Options side:

  • The dropdown lists it automatically, since it is built from LOOP_GLOW_TYPES.
  • The custom-glow performance warning no longer fires when selecting it. Hide does strictly less work than Blizzard's own glow, so warning about performance would be misleading.
  • Colour and Use Class Color grey out, as they already do for "None", because there is no glow to colour.
  • The preview icon renders dimmed with no glow, matching how "None" reads. Without that the preview dispatch fell through to its FlipBook arm with an entry that has no atlas or texture.

Testing

Confirmed in game: with Custom Proc Glow set to Hide, the proc glow is suppressed as intended.

Also verified: both files compile (luac -p), the change applies cleanly to main, and the code paths were traced by hand, including that switching to Hide while a proc is already live tears the existing glow down, since RefreshProcGlows re-runs UpdateFlipbook on any button with an active proc.

Why the Cooldown Manager did not need this

Worth recording, because it is the clearest argument for the change and it also confirms no equivalent work is needed in CDM.

CDM already offers a real off switch. Its per-spell Proc Glow menu has { val = 0, label = "None" }, and the glow starter honours it directly:

if ss.procGlow == 0 then return end -- proc glow disabled

That works because CDM hides Blizzard's own SpellActivationAlert on its icons and renders its own glow instead, so returning early leaves nothing drawn.

Action Bars is the opposite case. It does not universally suppress Blizzard's region, so its "None" (procGlowType 0) means "do not customise" and Blizzard's gold glow stays visible. Same label, opposite behaviour between the two modules. This change makes the Action Bars dropdown able to express what CDM could already express.

Verified in game that the CDM side already behaves correctly with Proc Glow -> None, so this PR is confined to Action Bars.

One asymmetry left, noted rather than addressed here: CDM's control is per spell, whereas this one is global. A bar-level or profile-level CDM default that per-spell values override would be a reasonable follow-up, but it is a separate change.

Notes for review

Two pre-existing things noticed while working here, neither changed:

  • The dropdown is disabled when Blizzard Style Action Bars is on, or when any bar uses a custom shape (custom shapes always use Shape Glow). Those players cannot reach Hide through the UI. A stored Hide still applies, which seems the right call, but the constraint is worth knowing.
  • PROC_START_TYPES already contains its own { name = "Hide", hide = true } entry, but that table is defined and exported and then never consumed anywhere. It looks like dead code. Left alone here since removing it is unrelated to this change.
Its Been A Long Time Waiting GIF

The Custom Proc Glow dropdown could replace Blizzard's gold proc glow with a
different style, but never suppress it. Its "None" entry means "do not
customise", so it leaves Blizzard's own glow in place, which reads as an off
switch that does not turn anything off. There was no way to have no glow at all.

Adds a "Hide" style. Appended last in LOOP_GLOW_TYPES on purpose: procGlowType
is stored by INDEX, so inserting anywhere else would silently reassign every
existing player's chosen style.

Only the VISUAL is suppressed. _procState.active still tracks the button, so the
assisted-highlight rescan and the glow rescan that read proc state stay correct;
this hides the surfaces rather than skipping the bookkeeping. Both surfaces are
covered (our glow wrapper and Blizzard's SpellActivationAlert), with alpha 0 as
well as Hide() on the latter, because Blizzard re-Shows its own region on the
next proc and alpha survives that.

Checked before the custom-shape force in UpdateFlipbook: that force decides HOW
a glow is drawn and must not resurrect one the player asked not to see.

Options side:
- The dropdown lists it automatically (built from LOOP_GLOW_TYPES).
- The custom-glow performance warning no longer fires when selecting it, since
  Hide does strictly less work than Blizzard's own glow.
- Colour and Use Class Color grey out, as they already do for "None", because
  there is no glow to colour.
- The preview icon renders dimmed with no glow, matching how "None" reads;
  without that the preview dispatch fell through to its FlipBook arm with an
  entry that has no atlas or texture.

Note PROC_START_TYPES (which already had its own Hide entry) is defined and
exported but never consumed anywhere, so the loop style is the only glow control
and one entry is sufficient.
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.

1 participant