From the user's visual-gate feedback + a retail decomp trace this session. Retail's model is remove-on-lift / place-on-drop / no-restore (confirmed: RecvNotice_ItemListBeginDrag 0x004bd930 → RemoveShortcut 0x004bd450 at lift; HandleDropRelease 0x004be7c0 places + bumps displaced → source; off-bar drop leaves it removed). This unifies the user's points 3/4/5 into one mechanism. Verified the drop sprite against client_portal.dat: 0x060011F9 = green RING (inventory), 0x060011FA = green CROSS (toolbar) — user was right. Scope (toolbar-internal; drag-from-inventory is Stream C): spine extensions (lift hook on IItemListDragHandler; ghost snapshotted at BeginDrag at full opacity so it survives the source emptying; FinishDrag delivers a drop only on a real hit, off-bar = nothing); a mutable 18-slot ShortcutStore; ToolbarController as the live handler (OnDragLift removes; HandleDropRelease places + bumps); the AddShortcut 0x019C / RemoveShortcut 0x019D wire (fix the BuildAddShortcut param names; SendAddShortcut/SendRemoveShortcut on WorldSession); green-cross overlay. Amends AP-47 (ghost now full opacity), retires TS-33 (real wire replaces the stub). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| architecture | ||
| audit | ||
| plans | ||
| research | ||
| superpowers | ||
| bugs.md | ||
| ISSUES.md | ||