Take half the room either side of the text in a log cell

The values sit closer to the line between the columns, and a column that
is as wide as its values is fifteen pixels narrower.

A header takes much more room besides its text than a cell does — its
own padding, and the room the theme keeps for the sort arrow — so the
two are now measured with an allowance each. One allowance for both
clipped "Mode" and "CQ-Zone" to the column width the values needed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0157i7PiZyqBkquxS9A6FTdQ
This commit is contained in:
2026-09-10 17:02:15 +00:00
co-authored by Claude Opus 5
parent 836624376e
commit 606c43e4a6
2 changed files with 12 additions and 5 deletions
+8 -4
View File
@@ -19,8 +19,12 @@ namespace Nonemm.App.Windows;
/// lasts as long as the window is open. /// lasts as long as the window is open.
public sealed partial class LogWindow public sealed partial class LogWindow
{ {
/// What a cell takes either side of its text, in device pixels. /// What a cell takes besides its text, in device pixels.
private const double CellPadding = 30; private const double CellPadding = 15;
/// What a header takes besides its text: its own padding and the room the
/// theme keeps for the sort arrow, which is much more than a cell takes.
private const double HeaderPadding = 45;
private readonly Dictionary<DataGridColumn, QsoColumn> columnOf = []; private readonly Dictionary<DataGridColumn, QsoColumn> columnOf = [];
private IReadOnlyList<QsoColumn> shown = []; private IReadOnlyList<QsoColumn> shown = [];
@@ -185,8 +189,8 @@ public sealed partial class LogWindow
/// theme's own font — so each is measured in the font it is drawn in. /// theme's own font — so each is measured in the font it is drawn in.
private static double WidthFor(QsoColumn column, DataGrid grid) => private static double WidthFor(QsoColumn column, DataGrid grid) =>
Math.Max( Math.Max(
TextWidth(new string('0', column.Width + 1), grid.FontFamily, grid.FontSize), TextWidth(new string('0', column.Width + 1), grid.FontFamily, grid.FontSize) + CellPadding,
TextWidth(column.Label + "0", FontFamily.Default, grid.FontSize)) + CellPadding; TextWidth(column.Label + "0", FontFamily.Default, grid.FontSize) + HeaderPadding);
private static double TextWidth(string text, FontFamily family, double size) => private static double TextWidth(string text, FontFamily family, double size) =>
new FormattedText( new FormattedText(
+4 -1
View File
@@ -12,6 +12,9 @@
<Style Selector="DataGridCell TextBlock"> <Style Selector="DataGridCell TextBlock">
<Setter Property="FontFamily" Value="monospace" /> <Setter Property="FontFamily" Value="monospace" />
<Setter Property="FontSize" Value="12" /> <Setter Property="FontSize" Value="12" />
<!-- half of what the theme leaves either side of the text, so more
columns fit across the window -->
<Setter Property="Margin" Value="6,0" />
</Style> </Style>
<!-- the theme gives a cell 32 pixels of height, which fits about a <!-- the theme gives a cell 32 pixels of height, which fits about a
dozen rows on screen. The row is cut down to the height of its dozen rows on screen. The row is cut down to the height of its
@@ -37,7 +40,7 @@
<Setter Property="FontSize" Value="12" /> <Setter Property="FontSize" Value="12" />
<Setter Property="MinHeight" Value="0" /> <Setter Property="MinHeight" Value="0" />
<Setter Property="Margin" Value="0" /> <Setter Property="Margin" Value="0" />
<Setter Property="Padding" Value="12,0" /> <Setter Property="Padding" Value="6,0" />
<Setter Property="BorderThickness" Value="0" /> <Setter Property="BorderThickness" Value="0" />
<Setter Property="VerticalContentAlignment" Value="Center" /> <Setter Property="VerticalContentAlignment" Value="Center" />
</Style> </Style>