fix(vtank): slice 7 fix round B item 4 — widen Profiles' CopyTo column, align the four Delete buttons

Measured "CopyTo" against the real installed DAT font 0x40000000 (a
temporary AcDream.Cli measure-text-temp verb using the same pen-advance
formula UiDatFont.GlyphAdvance uses, HorizontalOffsetBefore+Width+
HorizontalOffsetAfter, then removed): 42px wide against a declared 40px
button. UiSimpleButton centers its caption without clipping, so the extra
2px split evenly past both edges — a real, if small, overflow on three
rows (Macro/Nav/Meta all use "CopyTo"; Loot uses "New" instead).

Fix: widen the CopyTo/New column from 40 to 50px (296->306 x, +10 gap
preserved) and column-shift every following control on all four rows by
the same +10 to preserve every original gap. While shifting, also aligned
the four "Delete" buttons (DeleteProfile/DeleteRouteProfile/
DeleteLootProfile/DeleteMetaProfile) into one shared column at x=566 —
they previously sat at four different x's (546/456/346/346) because each
row has a different control count in front of it; the shorter rows now
have a wider gap before Delete instead of four misaligned columns.

tests/AcDream.Plugins.MossTank.Tests: 665/665 (unchanged — no new
behavior, pure geometry; the existing fit/overlap pins from items 2/3
still cover this file and stay green).
tests/AcDream.App.Tests --filter Markup|Plugin|UiMenu|Slider: 276/3 skipped/279 (unchanged).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-09-07 11:44:18 +02:00
parent 687f420d02
commit 7f95c771db

View file

@ -192,18 +192,37 @@
per-family Delete 530->546) — see the panel-level comment for why
(fixes "Enable Auto-Navigation" running into its dropdown). Every
gap between these columns is preserved exactly (a translation, not a
scale). -->
scale).
Fix round B item 4 (owner: "CopyTo" caption overflows its button):
measured against the real installed DAT font 0x40000000's own
per-glyph pen-advance (HorizontalOffsetBefore+Width+HorizontalOffsetAfter,
the formula UiDatFont.GlyphAdvance uses — AcDream.Cli's temporary
measure-text-temp verb), "CopyTo" is 42px wide against a declared
40px button — a 2px overflow UiSimpleButton's centered, unclipped
caption draws split evenly past both edges. CopyTo/New widens
296->306 (x, +10 gap preserved) and 40->50 (w, fits 42px with an 8px
margin); every column after it shifts +10 to preserve every original
gap (Clear-as-button 346->366, Mine-only 456->476, the aligned Delete
column 546/456/346/346->566 for all four rows, Show Editor 456->652).
The four "Delete" buttons (DeleteProfile/DeleteRouteProfile/
DeleteLootProfile/DeleteMetaProfile) previously sat at four different
x's because each row has a different control count before it (Macro
has Clear+Mine-only, Nav has only Clear, Loot has New+Delete+Show
Editor, Meta has only CopyTo) — they now share one column (x=566),
leaving a wider gap on the shorter rows rather than four columns
that don't line up. -->
<group x="8" y="42" w="848" h="194" visible="{ProfilesVisible}">
<label x="8" y="8" w="142" h="16" text="Macro Settings" color="#FFE8DEC3" />
<menu x="156" y="8" w="140" h="20" items="{MacroProfileNames}"
selected="{SelectedMacroProfile}" onchange="{SelectMacroProfile}"
rows="7" scroll="true" tooltip="Select the active macro profile." />
<button x="296" y="8" w="40" h="20" text="CopyTo" onclick="{CopyProfile}" />
<button x="346" y="8" w="100" h="20" text="Clear profile!"
<button x="306" y="8" w="50" h="20" text="CopyTo" onclick="{CopyProfile}" />
<button x="366" y="8" w="100" h="20" text="Clear profile!"
onclick="{ClearProfile}" />
<toggle x="456" y="8" w="80" h="20" text="Mine only"
<toggle x="476" y="8" w="80" h="20" text="Mine only"
checked="{MineOnlyEnabled}" onclick="{ToggleMineOnly}" />
<button x="546" y="8" w="76" h="20" text="Delete"
<button x="566" y="8" w="76" h="20" text="Delete"
onclick="{DeleteProfile}"
tooltip="Delete the selected named profile's real .usd file. Not available for By char." />
@ -212,10 +231,10 @@
<menu x="156" y="32" w="140" h="20" items="{RouteProfileNames}"
selected="{SelectedRouteProfile}" onchange="{SelectRouteProfile}"
rows="7" scroll="true" tooltip="Select the active navigation profile." />
<button x="296" y="32" w="40" h="20" text="CopyTo" onclick="{CopyRouteProfile}" />
<button x="346" y="32" w="100" h="20" text="Clear nav profile!"
<button x="306" y="32" w="50" h="20" text="CopyTo" onclick="{CopyRouteProfile}" />
<button x="366" y="32" w="100" h="20" text="Clear nav profile!"
onclick="{ClearRouteProfile}" />
<button x="456" y="32" w="76" h="20" text="Delete"
<button x="566" y="32" w="76" h="20" text="Delete"
onclick="{DeleteRouteProfile}"
tooltip="Delete the selected named route's real .af file. Not available for By char." />
@ -224,11 +243,11 @@
<menu x="156" y="56" w="140" h="20" items="{LootProfileNames}"
selected="{LootProfileName}" onchange="{SelectLootProfile}"
rows="7" scroll="true" tooltip="Select the active loot profile." />
<button x="296" y="56" w="40" h="20" text="New" onclick="{CreateLootProfile}" />
<button x="346" y="56" w="100" h="20" text="Delete"
<button x="306" y="56" w="50" h="20" text="New" onclick="{CreateLootProfile}" />
<button x="566" y="56" w="76" h="20" text="Delete"
onclick="{DeleteLootProfile}"
tooltip="Delete the selected named loot profile's real .utl file. Not available for By char." />
<toggle x="456" y="56" w="80" h="20" text="Show Editor"
<toggle x="652" y="56" w="80" h="20" text="Show Editor"
checked="{LootEditorVisible}" onclick="{ToggleLootEditorVisible}" />
<toggle x="8" y="80" w="142" h="20" text="Enable Meta Actions"
@ -236,8 +255,8 @@
<menu x="156" y="80" w="140" h="20" items="{MetaProfileNames}"
selected="{SelectedMetaProfile}" onchange="{SelectMetaProfile}"
rows="7" scroll="true" tooltip="Select the active meta profile." />
<button x="296" y="80" w="40" h="20" text="CopyTo" onclick="{CopyMetaProfile}" />
<button x="346" y="80" w="100" h="20" text="Delete"
<button x="306" y="80" w="50" h="20" text="CopyTo" onclick="{CopyMetaProfile}" />
<button x="566" y="80" w="76" h="20" text="Delete"
onclick="{DeleteMetaProfile}"
tooltip="Delete the selected named Meta profile's real .af file. Not available for By char." />