Skip to content

Redesign Friends List: full skinning, class icons, custom groups#179

Draft
danvernon wants to merge 3 commits intoEllesmereGaming:mainfrom
danvernon:feat/friends-list-redesign
Draft

Redesign Friends List: full skinning, class icons, custom groups#179
danvernon wants to merge 3 commits intoEllesmereGaming:mainfrom
danvernon:feat/friends-list-redesign

Conversation

@danvernon
Copy link
Copy Markdown
Contributor

Summary

  • Full FriendsFrame reskin: strips all Blizzard chrome (NineSlice, portrait, title bar, inset, tab textures, scrollbar, button art) and replaces with dark EUI theme
  • Accent-colored underline on the active tab via RegAccent integration
  • Class icons next to friend names with 8 style options (Blizzard atlas + modern/pixel/glyph/arcade/legend/midnight/runic spritesheets). Offline friends get desaturated icons
  • Custom friend groups: create named groups, assign friends via right-click context menu, group tags displayed on friend rows
  • Alternating row backgrounds and hover highlights on friend buttons
  • Expanded options page: accent tab toggle, class icon toggle + icon style dropdown, friend groups management section

Context

Feedback from Ellesmere requesting an ElvUI-style Friends List overhaul — removing all Blizzard custom look, utilizing accent color, adding class icons next to names, and allowing custom friend grouping.

Test plan

  • Load EllesmereUIBasics, open Friends List — verify all Blizzard chrome stripped
  • Dark bg, pixel borders, accent tab underline visible
  • Class icons next to online WoW friends, desaturated for offline
  • BNet friends playing non-WoW games: icon hidden gracefully
  • Right-click friend → "Set Group" submenu with group options
  • Options page: toggle accent underline, toggle class icons, change icon style
  • Options page: enable friend groups, add/delete groups
  • Disable module → Blizzard defaults restore cleanly
  • Enter combat → no taint errors (`/console taintLog 1`)
  • Profile reset restores all defaults

…and custom groups

- Strip all Blizzard FriendsFrame chrome (NineSlice, portrait, title bar,
  inset, tab textures, scrollbar decorations, bottom button art)
- Dark background with configurable opacity and pixel-perfect borders
- Accent-colored underline on active tab via RegAccent integration
- Class icons next to friend names with 8 icon style options (Blizzard
  atlas + 7 custom spritesheets: modern, pixel, glyph, arcade, legend,
  midnight, runic). Offline friends get desaturated icons.
- Custom friend groups: create named groups, assign friends via right-click
  context menu, group tags displayed on friend rows
- Alternating row backgrounds and hover highlights on friend buttons
- Expanded options page with new sections: accent tab toggle, class icon
  controls, icon style dropdown, friend groups management (add/delete)
- Full disable/enable support restores Blizzard defaults cleanly
@danvernon danvernon marked this pull request as draft March 21, 2026 09:27
@danvernon danvernon changed the title Redesign Friends List: full skinning, class icons, custom groups Redesign Friends List: full skinning, class icons, custom groups - WIP Mar 21, 2026
@danvernon danvernon changed the title Redesign Friends List: full skinning, class icons, custom groups - WIP Redesign Friends List: full skinning, class icons, custom groups Mar 21, 2026
…an up

- Extract GetFriendInfo() helper — single API call per button instead of
  3 separate calls to C_BattleNet/C_FriendList per button per update
- Fix stale loop index in group delete closure: capture group name at
  render time, find by name at click time (prevents wrong-group deletion
  on rapid successive deletes before page refresh)
- Lift context menu closures to module level (avoid per-open allocation)
- Merge two ScrollBox.Update hooks into one
- Hoist GetAccentColor() out of per-button loop
- Cache class icon texture/position to skip redundant SetTexture/SetPoint
- Remove unused globals (_EBS_GetFriendKey, _EBS_GetFriendDisplayName)
- Use named constants for friend key prefixes
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