fix #385: Options dropdowns — white centered text + size-to-content popup
User gate report (Campaign OP happy-testing round, 2026-08-13): every Config-tab dropdown drew its text gold + left-aligned and its popup a fixed 6 rows regardless of item count. All three were unmeasured styling divergences — the authored data (new probe menuprobe3, live DAT) says: - button label child 0x10000355: fontColor white, hJustify=Center - row template 0x1000035A: fontColor white, hJustify=Center - popup ListBox 0x10000358: edge-docked L=T=R=B=1, the authored condition arming retail UIElement_Menu::RecalculatePopupSize @0x0046caf0 — popup resizes to the ListBox's summed content height, uncapped (0x0046e5f4..0046e66c via ResizeScrollableArea's 0x32 broadcast) UiMenu gains three opt-in properties (ButtonTextCentered, ItemTextCentered, PopupSizeToContent) plus retail Open @0x0046cc42's empty-list gate; chat + vendor keep the class defaults, so their shipped behavior is untouched. ConfigOptionsPageController.ApplyMenuChrome wires all four corrections for the 8 Config menus with the probe citation. The same probe found vendor's authored popup ListBox is ALSO docked while our vendor dropdown ships G5's fixed 6-row window — filed as #386 + register row AD-88 (UNCLEAR: the G5 retail screenshot and the decomp mechanism conflict) instead of silently reworking a user-gated surface. The "resolution change resizes the window" observation from the same report is #374's designed windowed-mode behavior (display-mode switching is #376/#377) — no change. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
028920420d
commit
a9b6435f55
8 changed files with 422 additions and 9 deletions
|
|
@ -564,6 +564,49 @@ public sealed class ConfigOptionsPageControllerTests
|
|||
Assert.Equal(1, fakeBindings.AudioSaves[^1].SoundFeatures);
|
||||
}
|
||||
|
||||
/// <summary>User gate report 2026-08-13: every Config dropdown drew its
|
||||
/// text gold + left-aligned and its popup a fixed 6 rows. The corrected
|
||||
/// values are MEASURED authored facts (menuprobe3,
|
||||
/// <see cref="OptionsPanelLiveMountProbeTests.ProbeMenuPopupSizingAndTextStyle"/>):
|
||||
/// label child 0x10000355 + row template 0x1000035A are white +
|
||||
/// hJustify=Center, and popup ListBox 0x10000358 is edge-docked
|
||||
/// (L=T=R=B=1), arming retail's RecalculatePopupSize size-to-content
|
||||
/// path. Asserted on ALL 8 menus — one shared ApplyMenuChrome must not
|
||||
/// quietly skip any.</summary>
|
||||
[Fact]
|
||||
public void MenuRows_All8_UseTheAuthoredTextStyleAndSizeToContent()
|
||||
{
|
||||
ImportedLayout layout = FixtureLoader.LoadOptionsPanelHost();
|
||||
OptionsPanelController controller = OptionsPanelController.Bind(
|
||||
layout,
|
||||
new OptionsPanelController.Callbacks(
|
||||
Toggle: () => { },
|
||||
RequestExitToCharacterSelection: () => { },
|
||||
ExitGame: () => { },
|
||||
UseMouseTurningSettings: () => { },
|
||||
DisplaySystemMessage: _ => { }))!;
|
||||
var fakeBindings = new FakeBindings();
|
||||
Assert.True(ConfigOptionsPageController.Bind(
|
||||
layout,
|
||||
controller.ConfigPage,
|
||||
MakeTemplateResolver(),
|
||||
(_, _) => null,
|
||||
fakeBindings.ToBindings(),
|
||||
resolveSprite: _ => (1u, 8, 8)));
|
||||
|
||||
var listBox = Assert.IsType<UiTemplateListBox>(
|
||||
layout.FindElement(ConfigOptionsPageController.ListBoxElementId));
|
||||
List<UiMenu> menus = CollectMenus(listBox);
|
||||
Assert.Equal(8, menus.Count);
|
||||
foreach (UiMenu menu in menus)
|
||||
{
|
||||
Assert.Equal(System.Numerics.Vector4.One, menu.TextColor);
|
||||
Assert.True(menu.ButtonTextCentered);
|
||||
Assert.True(menu.ItemTextCentered);
|
||||
Assert.True(menu.PopupSizeToContent);
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MenuRow_Resolution_IsStringBacked_AndWritesThroughDisplayBindings()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue