fix(ui): retain compound spellbook button children

Render Type-1 state-propagating child media as the button face so spellbook school and level filters show their authored green Highlight indicator and keep labels at the retail left inset.

Lift captions, fonts, and colors from authored text children for framed buttons such as Delete, preventing centered filter labels from being covered by the overlapping delete frame.

Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
Erik 2026-07-15 16:40:42 +02:00
parent ac2ca8f965
commit c918ccea06
3 changed files with 113 additions and 9 deletions

View file

@ -269,12 +269,23 @@ row background 0x06001396
selected overlay child 0x10000342 -> 0x06001397
label child 0x10000344 (x=42, width=230)
icon child 0x1000033B (x=0, 32 x 32)
school/level filters Type-1, 90 x 14; label property on parent
filter indicator child 0x10000328 (x=0, y=1, 13 x 13)
filter Normal/Highlight art 0x06004D15 / 0x06004D17
delete button 0x100002A5
delete label child 0x100002A6 (100 x 32, centered, font 0x40000001)
```
The row's authored background contains the narrow horizontal separator visible
between entries. It is not an invented procedural line. The selection surface
is a separate overlay, so selecting a spell does not replace its icon or label.
The filter controls are ordinary `UIElement_Button` objects whose states have
`PassToChildren`; the green selected face is therefore the `Highlight` media on
their 13-pixel child, while the parent owns the label and the 90-pixel hit box.
The label begins four pixels after that child. Conversely, the Delete button
owns its frame media but its caption/font live in a full-size text child. A
retained leaf must lift those authored child roles; discarding all button
children loses both the filter indicator and the Delete caption.
```text
AddSpell(spellID):