From 254e38895cff7e595586547c6a1547ae206ac54d Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sat, 18 Oct 2025 18:29:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=97=A0=E7=84=A6=E7=82=B9=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=B8=A2=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/MainWindow.xaml.cs | 13 ++++++++++- .../MainWindow_cs/MW_FloatingBarIcons.cs | 23 ++++++------------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs index 120b0faa..d82f1d64 100644 --- a/Ink Canvas/MainWindow.xaml.cs +++ b/Ink Canvas/MainWindow.xaml.cs @@ -62,6 +62,7 @@ namespace Ink_Canvas // 设置面板相关状态 private bool userChangedNoFocusModeInSettings; + private bool isTemporarilyDisablingNoFocusMode = false; @@ -1839,7 +1840,11 @@ namespace Ink_Canvas { var hwnd = new WindowInteropHelper(this).Handle; int exStyle = GetWindowLong(hwnd, GWL_EXSTYLE); - if (Settings.Advanced.IsNoFocusMode) + + bool shouldBeNoFocus = isTemporarilyDisablingNoFocusMode ? + false : Settings.Advanced.IsNoFocusMode; + + if (shouldBeNoFocus) { SetWindowLong(hwnd, GWL_EXSTYLE, exStyle | WS_EX_NOACTIVATE); } @@ -2021,6 +2026,12 @@ namespace Ink_Canvas var toggle = sender as ToggleSwitch; Settings.Advanced.IsNoFocusMode = toggle != null && toggle.IsOn; SaveSettingsToFile(); + + if (isTemporarilyDisablingNoFocusMode) + { + isTemporarilyDisablingNoFocusMode = false; + } + ApplyNoFocusMode(); // 如果启用了窗口置顶,需要重新应用置顶设置以处理无焦点模式的变化 diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs index ccfbee7e..2d535209 100644 --- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs +++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs @@ -396,15 +396,11 @@ namespace Ink_Canvas { BorderSettings.Visibility = Visibility.Collapsed; isOpeningOrHidingSettingsPane = false; - // 在设置面板完全关闭后,根据情况恢复无焦点模式状态 - if (!userChangedNoFocusModeInSettings && wasNoFocusModeBeforeSettings) + if (isTemporarilyDisablingNoFocusMode) { - // 如果用户没有在设置中修改无焦点模式,则恢复之前的状态 - Settings.Advanced.IsNoFocusMode = true; - ToggleSwitchNoFocusMode.IsOn = true; // 同步更新设置面板中的开关状态 + isTemporarilyDisablingNoFocusMode = false; ApplyNoFocusMode(); } - // 如果用户在设置中修改了无焦点模式,则保持用户的修改 }; BorderSettings.RenderTransform = new TranslateTransform(); @@ -2707,11 +2703,9 @@ namespace Ink_Canvas // 如果当前在设置面板中,需要先恢复无焦点模式状态 if (BorderSettings.Visibility == Visibility.Visible) { - // 如果用户没有在设置中修改无焦点模式,则恢复之前的状态 - if (!userChangedNoFocusModeInSettings && wasNoFocusModeBeforeSettings) + if (isTemporarilyDisablingNoFocusMode) { - Settings.Advanced.IsNoFocusMode = true; - ToggleSwitchNoFocusMode.IsOn = true; + isTemporarilyDisablingNoFocusMode = false; ApplyNoFocusMode(); } SaveSettingsToFile(); @@ -2726,11 +2720,9 @@ namespace Ink_Canvas { if (BorderSettings.Visibility == Visibility.Visible) { - // 如果用户没有在设置中修改无焦点模式,则恢复之前的状态 - if (!userChangedNoFocusModeInSettings && wasNoFocusModeBeforeSettings) + if (isTemporarilyDisablingNoFocusMode) { - Settings.Advanced.IsNoFocusMode = true; - ToggleSwitchNoFocusMode.IsOn = true; + isTemporarilyDisablingNoFocusMode = false; ApplyNoFocusMode(); } SaveSettingsToFile(); @@ -2777,12 +2769,11 @@ namespace Ink_Canvas else { BorderSettings.Visibility = Visibility.Visible; - // 临时禁用无焦点模式以避免下拉选项被遮挡 wasNoFocusModeBeforeSettings = Settings.Advanced.IsNoFocusMode; userChangedNoFocusModeInSettings = false; // 重置用户修改标志 if (wasNoFocusModeBeforeSettings) { - Settings.Advanced.IsNoFocusMode = false; + isTemporarilyDisablingNoFocusMode = true; ApplyNoFocusMode(); }