v3.2.16
Settings dialog: the combo bleed (for real this time) + wider action buttons
Two Settings-window layout fixes. Both were re-rendered and confirmed on a real 100% and real 150% display (Tiny11 lab, DeviceDpi 96 and 144) — a 100%-only dev machine can't reveal a 150% issue, so both scales are verified.
- The Middle-click combo really stops bleeding into the card border now. v3.2.15 claimed this fix but it was inert:
ThemedComboBoxgrows its closed height viaCB_SETITEMHEIGHTinOnHandleCreated, butComboBox's preferred height is font-derived and ignoresItemHeight, and the control snaps its own height (soMinimumSize/GetPreferredSizeoverrides don't take). So the AutoSize cell kept reserving the too-short font height — measured realized Height 26 vs PreferredHeight 23 at 96 DPI — and the v3.2.15PerformLayout()-on-Load re-ran positioning against that same cached (short) measurement without ever moving the border. The real fix: the combo now exposes how far it overflows (OverflowBelow), and the form reserves that — plus a few px of breathing room — as extra bottom margin on each combo row (the one lever the combo can't override; theMarginsetter also busts the cell's stale preferred-size cache). The Middle-click combo's gap to the card border went from −1px to +6px. - Save / Apply / Cancel are wider. v3.2.15 distributed them evenly but they still collapsed to their short labels, looking puny under the GitHub / Update / Syncthing / Help / Check Config row. They now get a DPI-scaled minimum width (
LogicalToDeviceUnits(92)) so they read as substantial primary actions and balance that row.
What's underneath
SyncthingPause/CardLayout.cs—ThemedComboBoxnow exposesOverflowBelow(realized height − font-derived preferred height), computed once the handle exists.SyncthingPause/SettingsForm.cs— Load reserves each click-action combo'sOverflowBelow(+ breathing room) as bottom margin, and setsMinimumSize.Width = LogicalToDeviceUnits(92)on Save / Apply / Cancel.SyncthingPause.Tests/DpiLayoutRegressionTests.cs— two new guards (combo reserves bottom overflow; action buttons get an equal generous min-width), realized offscreen so the Load-time geometry is actually exercised. The v3.2.15 combo regression shipped precisely because no test guarded the bleed.SyncthingPause.csproj— 3.2.15 → 3.2.16.
Full Changelog: v3.2.15...v3.2.16