From 719d2ef29061b51ac27ce2fa9fb069f4718fb2dd Mon Sep 17 00:00:00 2001 From: Stone_Red <56473591+Stone-Red-Code@users.noreply.github.com> Date: Tue, 21 Nov 2023 15:00:51 +0100 Subject: [PATCH] Make sure the clock doesn't shift around when using non mono space fonts --- .../BuiltInWindowElements/TimePlugin.cs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/DesktopMagic/BuiltInWindowElements/TimePlugin.cs b/src/DesktopMagic/BuiltInWindowElements/TimePlugin.cs index b9c2df6..2bf6e75 100644 --- a/src/DesktopMagic/BuiltInWindowElements/TimePlugin.cs +++ b/src/DesktopMagic/BuiltInWindowElements/TimePlugin.cs @@ -11,13 +11,15 @@ namespace DesktopMagic.BuiltInWindowElements; internal class TimePlugin : Plugin { [Setting("Display Seconds")] - private readonly CheckBox displaySecondscheckBox = new CheckBox(true); + private readonly CheckBox displaySecondsCheckBox = new CheckBox(true); public override int UpdateInterval => 1000; + private string? oldFont = null; + private float maxWidth = 0; public override Bitmap Main() { - string time = displaySecondscheckBox.Value ? DateTime.Now.ToLongTimeString() : DateTime.Now.ToShortTimeString(); + string time = displaySecondsCheckBox.Value ? DateTime.Now.ToLongTimeString() : DateTime.Now.ToShortTimeString(); Font font = new Font(Application.Theme.Font, 200); @@ -28,7 +30,18 @@ internal class TimePlugin : Plugin SizeF size = tmpGr.MeasureString(time, font); - bmp = new Bitmap((int)size.Width, (int)size.Height); + if (oldFont != Application.Theme.Font) + { + oldFont = Application.Theme.Font; + maxWidth = 0; + } + + if (size.Width > maxWidth) + { + maxWidth = size.Width; + } + + bmp = new Bitmap((int)maxWidth, (int)size.Height); bmp.SetResolution(100, 100); using Graphics gr = Graphics.FromImage(bmp);