fix(ui): unify target-mode primary clicks

This commit is contained in:
Erik 2026-07-11 01:36:43 +02:00
parent b7e7ca9ee2
commit eb6229394a
12 changed files with 176 additions and 25 deletions

View file

@ -163,3 +163,16 @@ The 2026-07-11 non-debug Release gate passed ordinary use/container activation,
equip synchronization, and grounded world drop. No healing kit was available,
so targeted healing was not live-tested; retain the automated compatible,
invalid, and self-target coverage as the acceptance evidence for that branch.
## 2026-07-11 primary-click ownership
Every primary click that can name an object must first call
`ItemInteractionController.OfferPrimaryClick`. Its typed result is the contract:
`NotActive` permits the surface's ordinary select/open/use fallback;
`ConsumedSuccess` and `ConsumedRejected` are both terminal. Never let a rejected
target click fall through. Inventory cells and bags, main pack, paperdoll slots
and body, toolbar, radar, and world picking share this router; widgets continue
to expose callbacks without importing controllers. The router retains a consumed
target through the toolkit's 500 ms double-click window; otherwise UiRoot's
second Click plus DoubleClick could run ordinary activation after the first click
cleared target mode.