From b7c52842f288d4a5690f55608e0efa8257a69204 Mon Sep 17 00:00:00 2001
From: CJKmkp <2564608840@qq.com>
Date: Sun, 24 Aug 2025 02:30:38 +0800
Subject: [PATCH] =?UTF-8?q?improve:=E5=BF=AB=E6=8D=B7=E9=94=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Ink Canvas/Helpers/GlobalHotkeyManager.cs | 45 +++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/Ink Canvas/Helpers/GlobalHotkeyManager.cs b/Ink Canvas/Helpers/GlobalHotkeyManager.cs
index cb5a1d21..91923e38 100644
--- a/Ink Canvas/Helpers/GlobalHotkeyManager.cs
+++ b/Ink Canvas/Helpers/GlobalHotkeyManager.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Windows.Input;
using System.IO;
+using System.Reflection;
using Newtonsoft.Json;
using NHotkey.Wpf;
@@ -66,6 +67,13 @@ namespace Ink_Canvas.Helpers
{
try
{
+ // 检查是否处于选择模式,如果是则不拦截键盘操作
+ if (IsInSelectMode())
+ {
+ LogHelper.WriteLogToFile($"快捷键 {hotkeyName} 在选择模式下被忽略", LogHelper.LogType.Info);
+ return;
+ }
+
// 确保在主线程中执行
_mainWindow.Dispatcher.Invoke(() =>
{
@@ -550,6 +558,43 @@ namespace Ink_Canvas.Helpers
return null;
}
}
+
+ ///
+ /// 检查当前是否处于选择模式
+ ///
+ /// 如果处于选择模式则返回true,否则返回false
+ private bool IsInSelectMode()
+ {
+ try
+ {
+ // 通过反射访问主窗口的inkCanvas属性
+ var inkCanvasProperty = _mainWindow.GetType().GetProperty("inkCanvas",
+ BindingFlags.NonPublic | BindingFlags.Instance);
+
+ if (inkCanvasProperty != null)
+ {
+ var inkCanvas = inkCanvasProperty.GetValue(_mainWindow);
+ if (inkCanvas != null)
+ {
+ // 通过反射访问EditingMode属性
+ var editingModeProperty = inkCanvas.GetType().GetProperty("EditingMode");
+ if (editingModeProperty != null)
+ {
+ var editingMode = editingModeProperty.GetValue(inkCanvas);
+ // 检查是否为选择模式
+ return editingMode != null && editingMode.ToString() == "Select";
+ }
+ }
+ }
+
+ return false;
+ }
+ catch (Exception ex)
+ {
+ LogHelper.WriteLogToFile($"检查选择模式状态时出错: {ex.Message}", LogHelper.LogType.Warning);
+ return false;
+ }
+ }
#endregion
#region IDisposable Implementation