merge(vt): retail scrollbar chrome on plain <menu> popups and overflowing <list>s (owner: same assets as chat/inventory)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
commit
b71a8ea377
8 changed files with 787 additions and 47 deletions
|
|
@ -125,10 +125,17 @@ scrollbar, and a baked checkmark glyph on the current entry even with
|
|||
`style="plain"`. The open popup now matches `<list>`'s own chrome too: a
|
||||
flat fill + 1px border, one row per entry in the list text color, the
|
||||
current entry filled like a list selection, the hovered entry a slightly
|
||||
lighter fill, and no checkmark; more entries than the row cap show a plain
|
||||
1px-bordered scrollbar track with a flat thumb, no DAT scrollbar art.
|
||||
`style="retail"` keeps the sprite popup (gradient panel, checkmark-bearing
|
||||
row art, ornate scrollbar) exactly as before, unchanged.
|
||||
lighter fill, and no checkmark. A `<menu>` popup always scrolls a single
|
||||
column (rather than wrapping into more grid columns) once its item count
|
||||
exceeds `rows`; a further owner directive (still 2026-09-07 — "For
|
||||
scrollable dropdown or the meta window we use the same assets as we do in
|
||||
for example chat or inventory window") moved that overflow scrollbar to
|
||||
retail's own chrome — the exact sprites the chat window's transcript and
|
||||
the inventory list already use — while the rows themselves stay the flat
|
||||
style described above; a menu with too few items to overflow shows no bar
|
||||
at all. `style="retail"` keeps the sprite popup rows (gradient panel,
|
||||
checkmark-bearing row art) exactly as before, unchanged — only the
|
||||
scrollbar chrome is shared between the two styles.
|
||||
|
||||
Common to every element via `ApplyCommon`: `name`/`id` (a stable control
|
||||
name), `visible` (literal `true`/`false` or a bound `bool` property),
|
||||
|
|
@ -461,10 +468,12 @@ separate concept for: `WPaddingOuter=3px` (the list's own left/right
|
|||
margin), `WPadding=7px` (a gap BETWEEN columns), and a themed
|
||||
`VScrollBarButtonSize=16px` (scrollbar width, reserved on the right). It
|
||||
also forces every `CheckColumn` to a fixed 13px regardless of its declared
|
||||
`fixedwidth`. acdream's column model has no separate gap/scrollbar/
|
||||
forced-width concept — every column's declared `width` is its full cell
|
||||
width, columns sit directly adjacent with no gap, and a check column uses
|
||||
whatever `width` it's given like any other column.
|
||||
`fixedwidth`. acdream's column model has no separate gap/forced-width
|
||||
concept — every column's declared `width` is its full cell width, columns
|
||||
sit directly adjacent with no gap, and a check column uses whatever `width`
|
||||
it's given like any other column. The 16px scrollbar column IS now
|
||||
automatic (owner directive, 2026-09-07 — see "Scrollbar" below): a plugin
|
||||
author never reserves it by hand.
|
||||
|
||||
To transcribe a real VTank column table (as in
|
||||
`refs/vtank/uTank2.ViewXML.mainView.xml`) faithfully, declare each column's
|
||||
|
|
@ -472,11 +481,26 @@ To transcribe a real VTank column table (as in
|
|||
VVS's inter-column `WPadding` into the cell width itself, since acdream has
|
||||
no separate gap). For a `CheckColumn`, use VVS's forced 13px as the
|
||||
`fixedwidth` regardless of whatever `fixedwidth` the source XML declares
|
||||
(`16 -> 13 + 7 = 20`, not `16 + 7 = 23`). Reserve VVS's 16px scrollbar width
|
||||
on the LAST column specifically (add it to that column's own pitch, or fold
|
||||
it into the list's total declared `w`) — acdream's list draws no scrollbar
|
||||
of its own today, but reserving the space keeps the transcribed proportions
|
||||
matching what a real VVS `HudList` would show once one exists.
|
||||
(`16 -> 13 + 7 = 20`, not `16 + 7 = 23`). Do NOT also fold VVS's 16px
|
||||
scrollbar width into the last column's pitch or the list's total `w` — the
|
||||
list reserves that width itself, automatically, only while its rows
|
||||
actually overflow (see "Scrollbar" below); doing both would double-reserve
|
||||
it and starve the last column once the list has few enough rows to hide
|
||||
the bar.
|
||||
|
||||
### Scrollbar
|
||||
|
||||
Once a `<list>`'s rows overflow its own height (either the single-column or
|
||||
the `<column>` form), it reserves a 16px column at its right edge — VVS's
|
||||
own `VScrollBarButtonSize` placement — and draws retail's scrollbar chrome
|
||||
there: the same sprite ids the chat window's transcript and the inventory
|
||||
list already draw through (owner live-client report 2026-09-07: "For
|
||||
scrollable dropdown or the meta window we use the same assets as we do in
|
||||
for example chat or inventory window"). Mouse wheel keeps working as
|
||||
before; the bar itself is also fully interactive (up/down arrow clicks,
|
||||
track paging, and thumb drag). A list whose rows all fit reserves no width
|
||||
and draws no bar at all — the reservation and the chrome both come and go
|
||||
together with actual overflow, never present "just in case."
|
||||
|
||||
### Backward compatibility
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue