fix #381: Options-panel footer needs an opaque backing field
Root cause: a live-DAT probe found retail authors NO backing element behind the Character/Chat/Config tabs' Apply/Reset/Defaults footer — each page root has exactly five children (the row ListBox, its scrollbar, and the three buttons) with zero direct-state media on the root itself. Scrolled row content therefore bled through visibly between/behind the three buttons; the bleed-through is a rendering gap in our own composition, not a missing import. Fix: new minimal widget UiSolidSpriteFill tiles RetailChromeSprites.CenterFill (the SAME panel-background sprite the Options window's own chrome already draws behind everything, not an invented color) across the footer strip's rect, derived from the three buttons' own resolved Top/Height and z-ordered strictly behind every other child so it can never intercept input or occlude the buttons. Register row AP-205 records the synthesis. Regressed by OptionsPanelControllerTests. Bind_SynthesizesOneOpaqueFooterBacking_PerPageWithApplyResetDefaults, which pins exactly one backing field per page, sized from the live button rects, z-ordered behind every sibling. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
2a248c0d48
commit
a31fd631ad
7 changed files with 234 additions and 17 deletions
|
|
@ -38,16 +38,35 @@ button starts in, what media that state resolves) — before fixing.
|
|||
|
||||
## #381 — Options-panel footer (Apply/Reset/Defaults) needs an opaque backing field; list content shows through between the buttons
|
||||
|
||||
**Status:** OPEN — filed 2026-08-11 at Campaign OP gate 4 (user report).
|
||||
The Apply/Reset/Defaults row draws its three buttons directly over the
|
||||
page content, so scrolled rows/text remain visible between and behind
|
||||
them. Retail's tabs give that footer strip its own solid rectangular
|
||||
field (no border) that occludes the content underneath. Fix: an opaque
|
||||
borderless backing panel behind the footer button row on every page that
|
||||
has the three buttons (Character/Chat/Config, and the equivalent strip on
|
||||
Configure Keyboard if its authored layout shows the same bleed-through).
|
||||
Check first whether the authored LayoutDescs carry such a field element
|
||||
we fail to draw (preferred: draw the authored one) before synthesizing.
|
||||
**Status:** ROOT-CAUSED + FIXED (this commit) — pending the user's
|
||||
re-gate. Filed 2026-08-11 at Campaign OP gate 4 (user report).
|
||||
|
||||
**ROOT CAUSE — confirmed a genuine acdream synthesis, retail authors no
|
||||
backing element either.** A live-DAT probe dumped the Character/Chat/
|
||||
Config page roots' (`0x100001F9`/`0x100001FF`/`0x1000050A`) full
|
||||
top-level child inventory: each has EXACTLY five children — the row
|
||||
ListBox, its scrollbar, and the three physical buttons — with ZERO
|
||||
direct-state media on the page root itself. Retail's own footer strip has
|
||||
no authored backdrop; the bleed-through was a rendering gap, not a
|
||||
missing import. **Fix:** a new minimal widget, `UiSolidSpriteFill`, tiles
|
||||
`RetailChromeSprites.CenterFill` (the SAME panel-background sprite the
|
||||
Options window's own chrome already draws behind everything, not an
|
||||
invented color) across the footer strip's rect (derived from the three
|
||||
buttons' own resolved Top/Height, spanning the full page width),
|
||||
z-ordered strictly behind every other child so it can never occlude the
|
||||
buttons. Register row AP-205 records the synthesis (Configure Keyboard
|
||||
was NOT touched — its own footer strip was not probed and is out of this
|
||||
fix's scope; file a follow-up if it shows the same bleed-through).
|
||||
Regressed by
|
||||
`tests/AcDream.App.Tests/UI/Layout/OptionsPanelControllerTests.cs`
|
||||
(`Bind_SynthesizesOneOpaqueFooterBacking_PerPageWithApplyResetDefaults`
|
||||
— pins exactly one backing field per page, sized from the live button
|
||||
rects, z-ordered behind every sibling).
|
||||
|
||||
**Re-gate (§OP4/OP5/OP6, "the list does not clip/overlap the Apply/
|
||||
Reset/Defaults buttons" steps): scrolled content should no longer be
|
||||
visible through or around the three footer buttons on any of the three
|
||||
tabs.**
|
||||
|
||||
## #380 — Chat tab: the two opacity sliders are missing their retail row captions
|
||||
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -205,7 +205,12 @@ TrySetOption` seam every other Options-panel consumer already uses.
|
|||
FAILURE shape, not a crash, but still worth flagging which row).
|
||||
2. **Scroll the list** via the scrollbar. All 50+6 rows are reachable;
|
||||
the list does not clip or overlap the Apply/Reset/Defaults buttons at
|
||||
the bottom.
|
||||
the bottom. **Gate-4 re-test note (#381):** the footer strip behind the
|
||||
three buttons previously had NO backing — scrolled row text/content was
|
||||
visible bleeding through between and behind Apply/Reset/Defaults. The
|
||||
footer now has an opaque backing field; report if any content is still
|
||||
visible through or around the three buttons (this applies identically
|
||||
on the Chat and Config tabs' own footer strips, OP5/OP6 below).
|
||||
3. **Confirm the checkboxes reflect your character's actual state** —
|
||||
e.g. if you have `IgnoreAllegianceRequests` on from a prior session,
|
||||
its row should show checked on open (seeded from the live server bit
|
||||
|
|
@ -411,7 +416,9 @@ chat windows already read when deciding which lines to show.
|
|||
cleanly at the panel's bottom edge — scrolling reveals the rest
|
||||
smoothly. A block that disappears ENTIRELY while its header stays (the
|
||||
pre-fix void your gate-3 screenshot review caught) is a regression —
|
||||
report it.
|
||||
report it. **Gate-4 re-test note (#381):** see the Character-tab (OP4)
|
||||
step 2 note — the SAME opaque-footer-backing fix applies to this tab's
|
||||
own Apply/Reset/Defaults strip.
|
||||
3. **Look closely at a row whose mask covers MULTIPLE underlying message
|
||||
types** (Gameplay, Combat, Allegiance, or Fellowship — the composite-mask
|
||||
rows per the research doc) versus a single-bit row (e.g. "Error" or
|
||||
|
|
@ -590,7 +597,8 @@ should show no caption.
|
|||
invented English when a string fails to resolve).
|
||||
2. **Scroll the list** via the scrollbar. All 27 rows are reachable; the
|
||||
list does not clip or overlap the Apply/Reset/Defaults buttons at the
|
||||
bottom.
|
||||
bottom. **Gate-4 re-test note (#381):** see the Character-tab (OP4)
|
||||
step 2 note above — the SAME opaque-footer-backing fix applies here.
|
||||
|
||||
### Live rows — audio
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue