From 40ea9664a7e3f720c34a9293817cf7591ceaf27c Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sat, 15 Nov 2025 18:37:23 +0800 Subject: [PATCH] =?UTF-8?q?improve:=E5=BF=AB=E6=8A=BD=E7=BD=AE=E9=A1=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/MainWindow.xaml.cs | 22 ++++++++++++++++++++++ Ink Canvas/Windows/QuickDrawWindow.cs | 19 +++++++++++++++---- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs index b08d613f..88f2d78f 100644 --- a/Ink Canvas/MainWindow.xaml.cs +++ b/Ink Canvas/MainWindow.xaml.cs @@ -1956,6 +1956,28 @@ namespace Ink_Canvas } } + public void PauseTopmostMaintenance() + { + if (topmostMaintenanceTimer != null && isTopmostMaintenanceEnabled) + { + topmostMaintenanceTimer.Stop(); + } + } + + public void ResumeTopmostMaintenance() + { + if (Settings.Advanced.IsAlwaysOnTop && + Settings.Advanced.IsNoFocusMode && + !Settings.Advanced.EnableUIAccessTopMost) + { + if (topmostMaintenanceTimer != null && !isTopmostMaintenanceEnabled) + { + topmostMaintenanceTimer.Start(); + isTopmostMaintenanceEnabled = true; + } + } + } + /// /// 置顶维护定时器事件 /// diff --git a/Ink Canvas/Windows/QuickDrawWindow.cs b/Ink Canvas/Windows/QuickDrawWindow.cs index e8bfec04..7504c8a1 100644 --- a/Ink Canvas/Windows/QuickDrawWindow.cs +++ b/Ink Canvas/Windows/QuickDrawWindow.cs @@ -215,10 +215,6 @@ namespace Ink_Canvas } - private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) - { - // 窗口关闭时的清理工作 - } private void WindowDragMove(object sender, MouseButtonEventArgs e) { @@ -281,12 +277,27 @@ namespace Ink_Canvas /// private void QuickDrawWindow_Loaded(object sender, RoutedEventArgs e) { + MainWindow mainWindow = Application.Current.MainWindow as MainWindow; + if (mainWindow != null) + { + mainWindow.PauseTopmostMaintenance(); + } + // 使用延迟确保窗口完全加载后再应用置顶 Dispatcher.BeginInvoke(new Action(() => { ApplyQuickDrawWindowTopmost(); }), DispatcherPriority.Loaded); } + + private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) + { + MainWindow mainWindow = Application.Current.MainWindow as MainWindow; + if (mainWindow != null) + { + mainWindow.ResumeTopmostMaintenance(); + } + } #endregion } }