Skip to content

QoL: add mailbox improvements -- return shortcut and richer hover text - #1156

Open
Absol3m wants to merge 1 commit into
EllesmereGaming:mainfrom
Absol3m:feat/qol-mail-a-shortcuts
Open

QoL: add mailbox improvements -- return shortcut and richer hover text#1156
Absol3m wants to merge 1 commit into
EllesmereGaming:mainfrom
Absol3m:feat/qol-mail-a-shortcuts

Conversation

@Absol3m

@Absol3m Absol3m commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Adds a Mailbox Improvements section to the Quality of Life page, off by default.

  • Ctrl-click an inbox row returns that mail to its sender without opening it. Ignored for mail that can no longer be returned.
  • Hovering a row lists every attachment when the mail carries more than one (a single attachment is already named by the row's own subject).
  • Hovering a row spells out a subject the row is too narrow to display.

Each part can be switched off individually from a cog on the master toggle. The section is named for improvements rather than shortcuts because it is meant to house the mailbox work that follows.

Deliberately no shift-click take-contents shortcut: the retail client already does this natively. An earlier revision added one and it fired the take twice — the server answers with an internal mail database error, and an emptied item mail is left undeleted. This is recorded in the file header so it does not get reintroduced.

How was it tested?

Live retail, real mailbox:

  • multi-attachment mail -> every item listed with icon and stack count
  • long subject -> shown in full
  • ctrl-click a returnable mail -> returned to sender
  • ctrl-click an already-returned mail -> nothing happens
  • shift-click -> untouched Blizzard behaviour, no error, emptied mail deletes itself
  • each sub-toggle off -> that part alone stops working
  • cog greyed out and blocked while the feature is off
  • toggling on at the mailbox -> hooks install immediately, no reload needed

Not tested on the 12.1 PTR client.

Checklist

  • New settings default OFF (no behavior change without opt-in)
  • Zero cost while disabled: nothing is hooked until the feature is switched on -- off, it costs one frame and one PLAYER_LOGIN
  • Cheap while enabled: event-driven, no polling, no timers; the mailbox events are dropped once the rows are hooked
  • No writes onto Blizzard-owned frames; HookScript only, never SetScript -- the default click and tooltip always still run
  • Tested in-game on live retail. 12.1 PTR not tested.
image image

Ctrl-click an inbox row to return that mail to its sender. Hovering a
row now lists every attachment once the mail carries more than one, and
spells out a subject too long for the row to display.

Deliberately no shift-click take-contents shortcut: the retail client
already does this natively. Running our own take on top of it fired the
operation twice, which the server answers with an internal mail database
error and which leaves an emptied item mail undeleted.

Nothing is hooked until the feature is switched on: left off, it costs
one frame and one PLAYER_LOGIN. Once on, the mailbox events install the
row hooks on the next visit (or immediately, if it is switched on while
standing at a mailbox) and are then dropped, because hooks are permanent
and the handlers gate themselves on the setting from that point.

Every hook is additive, so the default click and the default tooltip
still run, and no Blizzard frame is written to. Attachment slots are not
guaranteed contiguous, so the tooltip walks every slot rather than
stopping once it has seen as many items as the header reports.

Off by default. Its individual parts sit in a cog popup on the master
toggle, so the section stays one row tall however many parts it gains --
the section is named for improvements rather than shortcuts because it
is meant to house the mailbox work that follows.
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