fix(ui): port retail window control feedback
Map synthetic move and resize affordances to the exact DAT cursors, make chat top chrome movable, and replace stale primary-panel height caps with a dynamic screen-edge constraint. This keeps the retained wrapper adaptation aligned with retail Dragbar/Resizebar behavior.
This commit is contained in:
parent
3f3cfdac30
commit
06016014bc
16 changed files with 578 additions and 27 deletions
|
|
@ -78,6 +78,36 @@ Magic are children of one `gmPanelUI`. The switch changes child visibility;
|
|||
there is no child move and no per-panel top-level position. Dragging the parent
|
||||
therefore moves the one position subsequently used by every child.
|
||||
|
||||
## Resize follow-up
|
||||
|
||||
The production end-of-retail LayoutDesc supplies the missing geometry oracle:
|
||||
|
||||
```text
|
||||
LayoutDesc 0x2100006E
|
||||
gmPanelUI host 0x100005FE 310 x 372
|
||||
content parent 0x10000180 300 x 362, anchored on all edges
|
||||
Inventory child 0x1000018B 300 x 362, anchored on all edges
|
||||
Character child 0x1000018E 300 x 362, anchored on all edges
|
||||
Magic child 0x10000190 300 x 362, anchored on all edges
|
||||
|
||||
top-center 0x1000065C Type 2 Dragbar, cursor 0x06006119
|
||||
bottom-center 0x10000660 Type 9 Resizebar, cursor 0x06005E66
|
||||
```
|
||||
|
||||
Every primary child therefore participates in the shared host's vertical
|
||||
resize; Magic is not a fixed-height exception. Named
|
||||
`gmPanelUI::ResizeTo @ 0x004BC6E0` delegates directly to
|
||||
`UIElement::ResizeTo @ 0x00463C30`, whose only size limits are effective DAT
|
||||
properties `0x3C..0x3F`. There is no retail 760-pixel Character limit and no
|
||||
maximum captured from the host's original screen position.
|
||||
|
||||
acdream retains independent wrappers under IA-12, so the faithful adaptation
|
||||
is to give each primary wrapper the same bottom-only vertical resize policy,
|
||||
leave its maximum unbounded by an authored substitute, and calculate the
|
||||
available desktop extent from its current position during the resize. The
|
||||
viewport remains the physical limit; an old static maximum must not become a
|
||||
smaller limit after the shared panel moves.
|
||||
|
||||
## acdream port shape
|
||||
|
||||
acdream imports these child LayoutDesc roots independently, so each currently
|
||||
|
|
@ -105,7 +135,9 @@ The controller owns this synchronization and subscribes to typed
|
|||
`RetailWindowHandle.Moved` events. Toolbar commands, keyboard commands,
|
||||
restore-previous effects, persistence restore, and direct window dragging all
|
||||
therefore pass through the same owner. Panel-authored size/resize policy stays
|
||||
with the active child; only the retail parent placement is shared.
|
||||
with the active child, but the three primary wrappers apply the shared host's
|
||||
same vertical resize contract; only placement is synchronized between the
|
||||
independent frames.
|
||||
|
||||
ACE contains no client UI implementation, and the in-tree WorldBuilder
|
||||
reference contains no `gmPanelUI` port, so neither supplies a competing
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue