diff --git a/Core/Notification/FormNotificationBase.cs b/Core/Notification/FormNotificationBase.cs index a586d86a..5727b5a9 100644 --- a/Core/Notification/FormNotificationBase.cs +++ b/Core/Notification/FormNotificationBase.cs @@ -67,12 +67,13 @@ protected Point PrimaryLocation{ public Func<bool> CanMoveWindow = () => true; protected override bool ShowWithoutActivation => true; + protected double SizeScale => dpiScale*Program.UserConfig.ZoomMultiplier; + protected readonly Form owner; protected readonly ChromiumWebBrowser browser; - - protected float dpiScale; - + private readonly ResourceHandlerNotification resourceHandler = new ResourceHandlerNotification(); + private readonly float dpiScale; private string currentColumn; private int pauseCounter; @@ -181,7 +182,7 @@ protected virtual void LoadTweet(TweetNotification tweet){ } protected virtual void SetNotificationSize(int width, int height){ - browser.ClientSize = ClientSize = new Size((int)Math.Round(width*dpiScale*Program.UserConfig.ZoomMultiplier), (int)Math.Round(height*dpiScale*Program.UserConfig.ZoomMultiplier)); + browser.ClientSize = ClientSize = new Size(BrowserUtils.Scale(width, SizeScale), BrowserUtils.Scale(height, SizeScale)); } protected virtual void OnNotificationReady(){ diff --git a/Core/Notification/FormNotificationMain.cs b/Core/Notification/FormNotificationMain.cs index 1b6dff81..45ecebb2 100644 --- a/Core/Notification/FormNotificationMain.cs +++ b/Core/Notification/FormNotificationMain.cs @@ -55,16 +55,16 @@ private bool RequiresResize{ private int BaseClientWidth{ get{ int level = TweetNotification.FontSizeLevel; - int width = level == 0 ? 284 : (int)Math.Round(284.0*(1.0+0.05*level)); - return (int)Math.Round(width*dpiScale*Program.UserConfig.ZoomMultiplier); + int width = level == 0 ? 284 : BrowserUtils.Scale(284, 1.0+0.05*level); + return BrowserUtils.Scale(width, SizeScale); } } private int BaseClientHeight{ get{ int level = TweetNotification.FontSizeLevel; - int height = level == 0 ? 118 : (int)Math.Round(118.0*(1.0+0.075*level)); - return (int)Math.Round(height*dpiScale*Program.UserConfig.ZoomMultiplier); + int height = level == 0 ? 118 : BrowserUtils.Scale(118, 1.0+0.075*level); + return BrowserUtils.Scale(height, SizeScale); } } @@ -104,9 +104,7 @@ private IntPtr MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam){ int eventType = wParam.ToInt32(); if (eventType == NativeMethods.WM_MOUSEWHEEL && browser.Bounds.Contains(PointToClient(Cursor.Position))){ - int distance = (int)Math.Round(NativeMethods.GetMouseHookData(lParam)*(Program.UserConfig.NotificationScrollSpeed/100.0)); - - browser.SendMouseWheelEvent(0, 0, 0, distance, CefEventFlags.None); + browser.SendMouseWheelEvent(0, 0, 0, BrowserUtils.Scale(NativeMethods.GetMouseHookData(lParam), Program.UserConfig.NotificationScrollSpeed/100.0), CefEventFlags.None); return NativeMethods.HOOK_HANDLED; } else if (eventType == NativeMethods.WM_XBUTTONDOWN && DesktopBounds.Contains(Cursor.Position)){ @@ -177,7 +175,7 @@ private void timerHideProgress_Tick(object sender, EventArgs e){ timeLeft -= timerProgress.Interval; - int value = (int)Math.Round(1025.0*(totalTime-timeLeft)/totalTime); + int value = BrowserUtils.Scale(1025, (totalTime-timeLeft)/(double)totalTime); progressBarTimer.SetValueInstant(Math.Min(1000, Math.Max(0, Program.UserConfig.NotificationTimerCountDown ? 1000-value : value))); if (timeLeft <= 0){ diff --git a/Core/Other/FormSettings.cs b/Core/Other/FormSettings.cs index b09d7778..0f0337fe 100644 --- a/Core/Other/FormSettings.cs +++ b/Core/Other/FormSettings.cs @@ -5,6 +5,7 @@ using TweetDuck.Core.Controls; using TweetDuck.Core.Other.Settings; using TweetDuck.Core.Other.Settings.Dialogs; +using TweetDuck.Core.Utils; using TweetDuck.Plugins; using TweetDuck.Updates; @@ -28,7 +29,7 @@ public FormSettings(FormBrowser browser, PluginManager plugins, UpdateHandler up this.plugins = plugins; - this.buttonHeight = (int)Math.Round(39*this.GetDPIScale()) | 1; + this.buttonHeight = BrowserUtils.Scale(39, this.GetDPIScale()) | 1; AddButton("General", () => new TabSettingsGeneral(updates)); AddButton("Notifications", () => new TabSettingsNotifications(browser.CreateNotificationForm(false))); diff --git a/Core/Utils/BrowserUtils.cs b/Core/Utils/BrowserUtils.cs index 47864c9a..22bbfb5a 100644 --- a/Core/Utils/BrowserUtils.cs +++ b/Core/Utils/BrowserUtils.cs @@ -93,6 +93,10 @@ public static WebClient DownloadFileAsync(string url, string target, Action onSu return client; } + public static int Scale(int baseValue, double scaleFactor){ + return (int)Math.Round(baseValue*scaleFactor); + } + public static void SetZoomLevel(IBrowser browser, int percentage){ browser.GetHost().SetZoomLevel(Math.Log(percentage/100.0, 1.2)); } diff --git a/Plugins/Controls/PluginControl.cs b/Plugins/Controls/PluginControl.cs index 795334bf..eea41101 100644 --- a/Plugins/Controls/PluginControl.cs +++ b/Plugins/Controls/PluginControl.cs @@ -30,7 +30,7 @@ public PluginControl(PluginManager pluginManager, Plugin plugin) : this(){ this.labelAuthor.Text = plugin.Author; this.labelWebsite.Text = plugin.Website; - this.labelType.LineHeight = (int)Math.Round(9*dpiScale); + this.labelType.LineHeight = BrowserUtils.Scale(9, dpiScale); UpdatePluginState(); @@ -47,7 +47,7 @@ private void panelDescription_Resize(object sender, EventArgs e){ } else{ labelDescription.MaximumSize = new Size(panelDescription.Width-SystemInformation.VerticalScrollBarWidth, 0); - Height = Math.Min(MinimumSize.Height+(int)Math.Round(9*dpiScale)+labelDescription.Height, MaximumSize.Height); + Height = Math.Min(MinimumSize.Height+BrowserUtils.Scale(9, dpiScale)+labelDescription.Height, MaximumSize.Height); } }