Skip to content

QoL: Raid Tools gains a Raid Groups window, and Show as goes cumulative - #1081

Open
Absol3m wants to merge 2 commits into
EllesmereGaming:mainfrom
Absol3m:feat/raid-tools-group-filter
Open

QoL: Raid Tools gains a Raid Groups window, and Show as goes cumulative#1081
Absol3m wants to merge 2 commits into
EllesmereGaming:mainfrom
Absol3m:feat/raid-tools-group-filter

Conversation

@Absol3m

@Absol3m Absol3m commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Adds a third content group to Raid Tools: eight numbered toggles for which raid
subgroups the raid frames draw, reachable mid-raid instead of three levels into
the options window.

It stays in sync with Raid Frames

The window keeps no state of its own. Every paint reads
EllesmereUIRaidFrames' visibleGroups through Lite.GetAddon(folder, silent)
and every click writes it and calls _ERF_RefreshAll — the handle and the
refresh the suite already publishes for that module. There is no second copy,
so this window and the Show Groups checklist on the Raid Frames page cannot
drift apart. No changes to the Raid Frames module.

Its default is theirs too: groups 7 and 8 start hidden, because a second
default here is exactly the drift the design forbids.

Fallback when Raid Frames is disabled

The silent flag returning nil is the detection — the buttons grey out and
the row caption says what is missing.

I looked at driving Blizzard's own group filter and decided against it.
CompactRaidFrameManager_ToggleGroupFilter still exists, but the FilterGroup
buttons do not — Blizzard removed that UI and left the functions behind, and
GetSetting offers no read to paint from. Driving a protected frame through an
unexercised code path felt like the wrong trade here. Anyone who disabled our
raid frames is on Blizzard's, Grid2 or Cell, which all carry their own group
filter.

Show as had to change

Window composition is two independent axes, so four named values could not
survive a third window — the combinations grow as 2ⁿ while the names grow as n.
It becomes a checklist of which windows exist, plus a Combine Into One
Window
cog. Decoupling them also fixed a gap: the checkbox dropdown has no
native disabled handling, so it now greys with the rest of the page on Never.

Three hardcoded rules became general. The primary window — first checked, in
canonical order — hosts the combined shell, anchors the collapsed icon and
carries the single collapse button. One predicate, ShellActive, now drives
visibility, positioning, the default stack and the unlock rows, replacing the
literal showAs == "markers" / ~= "two" tests that were spread across all
four.

Existing profiles convert through a registered profile-scope migration, so
every saved profile is walked rather than only the active one. Raid Groups
stays off for them — an update must not put a window on screen nobody asked
for.

Combat

Applying a group change rebuilds secure headers, which lockdown forbids:
_LayoutGroupsImpl returns early and the module's post-combat pass only replays
roster and size-tier changes. So a click in combat lands the setting
immediately and defers the re-render to PLAYER_REGEN_ENABLED. The deeper fix
is a dirty flag on the Raid Frames side — which would also fix every other
caller of _ERF_RefreshAll — but that is their module and belongs to its own
PR; the comment says so.

Testing

Tested in game on 8.6.6: groups hide and the remaining ones close ranks, the
combine cog works, a lone checked window keeps its own title, and the migration
left an existing profile's composition untouched with Raid Groups off.
luac -p clean on all three files; Locales/_keys.txt unchanged (every label
reaches L through a variable).

image

In this window, I would like to implement a mechanism that would allow users to manage the composition of the various groups by dragging and dropping players into them.

@Absol3m
Absol3m force-pushed the feat/raid-tools-group-filter branch 2 times, most recently from f460b82 to fdc82fe Compare July 31, 2026 08:20
Adds a third content group to Raid Tools: eight numbered toggles for which
raid subgroups the raid frames draw, reachable mid-raid instead of three
levels into the options window.

It keeps no state of its own. Every paint reads EllesmereUIRaidFrames'
visibleGroups through Lite.GetAddon(folder, silent) and every click writes
it and calls _ERF_RefreshAll -- the handle and the refresh the suite already
publishes for that module -- so this window and the Show Groups checklist on
the Raid Frames page cannot drift apart. The silent flag returning nil when
that addon is disabled is also the fallback detection: the buttons grey out
and the row caption says what is missing. Driving Blizzard's own group
filter was considered and rejected -- CompactRaidFrameManager is protected,
Blizzard has already removed the UI that drove those functions, and there is
no supported read to paint from.

Show as could not stay a four-value dropdown: window composition is two
independent axes, so the named combinations grow as 2^n while the names grow
as n. It becomes a checklist of which windows exist plus a Combine Into One
Window cog. The primary window -- first checked, canonical order -- hosts the
combined shell, anchors the collapsed icon and carries the single collapse
button, and one predicate (ShellActive) now drives visibility, positioning,
the default stack and the unlock rows, replacing the literal key tests that
were spread across all four.

Existing profiles convert through a registered profile-scope migration, so
every saved profile is walked rather than only the active one. Raid Groups
stays off for them: an update must not put a window on screen nobody asked
for.

Applying a group change rebuilds secure headers, which lockdown forbids, so
a click in combat lands the setting now and defers the re-render to
PLAYER_REGEN_ENABLED.
@Absol3m
Absol3m force-pushed the feat/raid-tools-group-filter branch from fdc82fe to 03fe07a Compare July 31, 2026 20:28
Two features called "Raid Groups" -- this panel, which chooses which
subgroups the raid frames draw, and the window that actually moves people
between subgroups -- is how a raid leader clicks the wrong one. This one is
about visibility, so it says so.

Label only. The section KEY stays RaidGroups: it persists in saved anchors,
and renaming it would break existing links. Locales/_keys.txt is unchanged
because the label reaches L as a variable, which the static extractor does
not see by design (the in-game /euiloc harvester covers it).
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