docs(D.2b): spec correction — input is Variant B, Type 3 not registered
Record the two execution-time corrections to the design's registration assumptions: the editable input resolves to Type 12 (Variant B, controller-placed UiField), and Type 3 is NOT factory-registered (acdream's Type-3 elements are chrome/containers, kept on the UiDatElement fallback). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
ee2e0fafa0
commit
83076cdbb6
1 changed files with 24 additions and 0 deletions
|
|
@ -108,6 +108,30 @@ Type 0 has no class of its own — a Type-0 element is a placement/override that
|
||||||
inherits its class from its base. That is exactly what `ElementReader.Merge`
|
inherits its class from its base. That is exactly what `ElementReader.Merge`
|
||||||
already does.
|
already does.
|
||||||
|
|
||||||
|
> **Implementation correction (2026-06-16, settled during execution).** Two of
|
||||||
|
> this design's registration assumptions changed once the empirical resolved
|
||||||
|
> Types were in hand (Task 1):
|
||||||
|
> 1. **The editable input `0x10000016` resolves to Type 12 (Text), not Type 3.**
|
||||||
|
> So the input is **Variant B** — the factory builds it as a `UiText`
|
||||||
|
> placeholder and `ChatWindowController` removes that and controller-places a
|
||||||
|
> `UiField` at its rect. (Confirmed by the chat golden fixture.)
|
||||||
|
> 2. **Type 3 is NOT registered → `UiField` in this pass.** In acdream's vitals
|
||||||
|
> (`0x2100006C`) and chat (`0x21000006`) layouts, Type-3 dat elements are
|
||||||
|
> sprite-bearing **chrome** (the 8-piece bevel corners/edges, e.g. vitals
|
||||||
|
> `0x10000633` → sprite `0x060074C3`) and the transcript/input **container**
|
||||||
|
> panels — NOT editable fields. Retail draws those as inert media-bearing
|
||||||
|
> Fields, which our generic `UiDatElement` reproduces pixel-for-pixel and
|
||||||
|
> without a spurious focus/edit affordance. Registering Type 3 → `UiField`
|
||||||
|
> (which draws no dat sprite) would blank the vitals bevel. So the factory
|
||||||
|
> switch registers **Button (1), Menu (6), Meter (7), Scrollbar (11), Text
|
||||||
|
> (12)**; Type 3 stays on the `UiDatElement` fallback. `UiField` still ships
|
||||||
|
> (the renamed editable widget) — it is just controller-placed, not
|
||||||
|
> factory-wired. Register Type 3 → `UiField` only when a window carries a
|
||||||
|
> factory-built editable Type-3 field (and `UiField` then grows a
|
||||||
|
> background-media draw + an opt-in editable flag). Guarded by
|
||||||
|
> `VitalsTree_ChromeCornerHasExpectedSprite` (asserts the corner stays a
|
||||||
|
> `UiDatElement` drawing its sprite).
|
||||||
|
|
||||||
### 2.2 The `gm*UI::PostInit` binding pattern (the controller target)
|
### 2.2 The `gm*UI::PostInit` binding pattern (the controller target)
|
||||||
|
|
||||||
`gmVitalsUI::PostInit` (`acclient_2013_pseudo_c.txt:199170-199228`) and
|
`gmVitalsUI::PostInit` (`acclient_2013_pseudo_c.txt:199170-199228`) and
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue