diff --git a/src/AcDream.App/UI/Layout/ChatWindowController.cs b/src/AcDream.App/UI/Layout/ChatWindowController.cs index 44012ce1..ff31b824 100644 --- a/src/AcDream.App/UI/Layout/ChatWindowController.cs +++ b/src/AcDream.App/UI/Layout/ChatWindowController.cs @@ -492,6 +492,11 @@ public sealed class ChatWindowController : IRetainedWindowStateController, IReta if (labelInfo.FontDid != 0u && resolveFont?.Invoke(labelInfo.FontDid) is { } buttonFont) menu.ButtonDatFont = buttonFont; + // The child spans the FULL 46x17 with H=Center (probed) — + // retail centers 'Chat'/'Gen' in the whole face, not at a + // fixed left indent (owner screenshot pair, 2026-08-24). + menu.ButtonTextCentered = + labelInfo.HJustify == HJustify.Center; } menu.NormalSprite = MenuNormal; menu.PressedSprite = MenuPressed; menu.PopupBgSprite = MenuPopupBg; diff --git a/tests/AcDream.App.Tests/UI/Layout/ChatLayoutConformanceTests.cs b/tests/AcDream.App.Tests/UI/Layout/ChatLayoutConformanceTests.cs index 502087ca..bb7ff5b6 100644 --- a/tests/AcDream.App.Tests/UI/Layout/ChatLayoutConformanceTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/ChatLayoutConformanceTests.cs @@ -768,8 +768,10 @@ public class ChatLayoutConformanceTests Assert.Equal(46f, menu.Width); menu.OnSelect!.Invoke(ChatChannelKind.General); Assert.Equal(46f, menu.Width); - // Authored caption color: pure white. + // Authored caption color: pure white; authored H=Center over the + // full 46x17 face (not the synthetic 20px left indent). Assert.Equal(new System.Numerics.Vector4(1f, 1f, 1f, 1f), menu.TextColor); + Assert.True(menu.ButtonTextCentered); var send = Assert.IsType(layout.FindElement(0x10000019u)); Assert.Equal(new System.Numerics.Vector4(1f, 1f, 1f, 1f), send.LabelColor);