Compare commits

...

3 Commits

Author SHA1 Message Date
Michael Jolley
b8ced06f9d Merge branch 'main' into microsoft-powertoys-cmdpal/instance/-47482 2026-06-25 22:48:13 -05:00
Michael Jolley
02af47f942 Use left-aligned padding and fix edge-case boundary jitter
- Switch from right-aligned {0,4:...} to left-aligned {0,-4:...} so
  values appear left-aligned as before, with trailing space padding
- Use MathF.Round(value, 1) < 10f instead of value < 10 to prevent
  jitter at the decimal/integer boundary (9.95 rounding to '10.0')
- Replace ambiguous {0,4:0.} format with clear {0,-4:0}

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-23 22:25:29 -05:00
root
826659f0a7 fix(cmdpal): use fixed-width number formatting to reduce dock jitter (#47482)
Instead of bumping MinWidth on all dock items (which wastes space on
non-PerfMon items), fix the root cause: PerfMon network speed format
functions now use right-aligned fixed-width number fields ({0,4:...})
so that text length remains stable as values change magnitude.

Reverts the MinWidth bump (48→24) from the previous approach.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-24 20:30:30 -05:00

View File

@@ -786,34 +786,34 @@ internal sealed partial class SystemNetworkUsageWidgetPage : WidgetPage, IDispos
value /= 1024;
if (value < 1024)
{
if (value < 100)
if (MathF.Round(value, 1) < 10f)
{
return string.Format(CultureInfo.InvariantCulture, "{0:0.0} Kbps", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0.0} Kbps", value);
}
return string.Format(CultureInfo.InvariantCulture, "{0:0} Kbps", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0} Kbps", value);
}
// Kbits to Mbits
value /= 1024;
if (value < 1024)
{
if (value < 100)
if (MathF.Round(value, 1) < 10f)
{
return string.Format(CultureInfo.InvariantCulture, "{0:0.0} Mbps", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0.0} Mbps", value);
}
return string.Format(CultureInfo.InvariantCulture, "{0:0} Mbps", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0} Mbps", value);
}
// Mbits to Gbits
value /= 1024;
if (value < 100)
if (MathF.Round(value, 1) < 10f)
{
return string.Format(CultureInfo.InvariantCulture, "{0:0.0} Gbps", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0.0} Gbps", value);
}
return string.Format(CultureInfo.InvariantCulture, "{0:0} Gbps", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0} Gbps", value);
}
private static string FormatAsBytesPerSecString(float value)
@@ -822,34 +822,34 @@ internal sealed partial class SystemNetworkUsageWidgetPage : WidgetPage, IDispos
value /= 1024;
if (value < 1024)
{
if (value < 100)
if (MathF.Round(value, 1) < 10f)
{
return string.Format(CultureInfo.InvariantCulture, "{0:0.0} KB/s", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0.0} KB/s", value);
}
return string.Format(CultureInfo.InvariantCulture, "{0:0} KB/s", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0} KB/s", value);
}
// KB to MB
value /= 1024;
if (value < 1024)
{
if (value < 100)
if (MathF.Round(value, 1) < 10f)
{
return string.Format(CultureInfo.InvariantCulture, "{0:0.0} MB/s", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0.0} MB/s", value);
}
return string.Format(CultureInfo.InvariantCulture, "{0:0} MB/s", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0} MB/s", value);
}
// MB to GB
value /= 1024;
if (value < 100)
if (MathF.Round(value, 1) < 10f)
{
return string.Format(CultureInfo.InvariantCulture, "{0:0.0} GB/s", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0.0} GB/s", value);
}
return string.Format(CultureInfo.InvariantCulture, "{0:0} GB/s", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0} GB/s", value);
}
private static string FormatAsBinaryBytesPerSecString(float value)
@@ -858,34 +858,34 @@ internal sealed partial class SystemNetworkUsageWidgetPage : WidgetPage, IDispos
value /= 1024;
if (value < 1024)
{
if (value < 100)
if (MathF.Round(value, 1) < 10f)
{
return string.Format(CultureInfo.InvariantCulture, "{0:0.0} KiB/s", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0.0} KiB/s", value);
}
return string.Format(CultureInfo.InvariantCulture, "{0:0} KiB/s", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0} KiB/s", value);
}
// KiB to MiB
value /= 1024;
if (value < 1024)
{
if (value < 100)
if (MathF.Round(value, 1) < 10f)
{
return string.Format(CultureInfo.InvariantCulture, "{0:0.0} MiB/s", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0.0} MiB/s", value);
}
return string.Format(CultureInfo.InvariantCulture, "{0:0} MiB/s", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0} MiB/s", value);
}
// MiB to GiB
value /= 1024;
if (value < 100)
if (MathF.Round(value, 1) < 10f)
{
return string.Format(CultureInfo.InvariantCulture, "{0:0.0} GiB/s", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0.0} GiB/s", value);
}
return string.Format(CultureInfo.InvariantCulture, "{0:0} GiB/s", value);
return string.Format(CultureInfo.InvariantCulture, "{0,-4:0} GiB/s", value);
}
internal override void PushActivate()