From 6e0aad853c6937421c9a15fd39daf0f7192d1aba Mon Sep 17 00:00:00 2001 From: CJK_mkp <113243675+CJKmkp@users.noreply.github.com> Date: Fri, 31 Oct 2025 14:44:05 +0800 Subject: [PATCH] Update MW_TouchEvents.cs --- Ink Canvas/MainWindow_cs/MW_TouchEvents.cs | 41 +++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs b/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs index ddb295e5..2cfe181a 100644 --- a/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs +++ b/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs @@ -798,7 +798,45 @@ namespace Ink_Canvas { isMultiTouchTimerActive = false; } - + + + // 当手掌擦激活且所有触摸点都抬起时,恢复原编辑模式 + if (isPalmEraserActive && dec.Count == 0) + { + LogHelper.WriteLogToFile($"Palm eraser recovery triggered - Touch points remaining: {dec.Count}"); + + // 恢复高光状态 + drawingAttributes.IsHighlighter = palmEraserLastIsHighlighter; + + // 恢复编辑模式 + try + { + if (inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint) + { + // 根据之前的状态恢复 + switch (palmEraserLastEditingMode) + { + case InkCanvasEditingMode.Ink: + PenIcon_Click(null, null); + break; + case InkCanvasEditingMode.Select: + SymbolIconSelect_MouseUp(null, null); + break; + default: + inkCanvas.EditingMode = palmEraserLastEditingMode; + break; + } + + LogHelper.WriteLogToFile($"Palm eraser recovered to mode: {palmEraserLastEditingMode}"); + } + } + catch (Exception ex) + { + // 如果恢复失败,强制切换到批注模式 + LogHelper.WriteLogToFile($"Palm eraser recovery failed: {ex.Message}, forcing to Ink mode", LogHelper.LogType.Error); + inkCanvas.EditingMode = InkCanvasEditingMode.Ink; + } + // 重置手掌擦状态 isPalmEraserActive = false; @@ -972,6 +1010,7 @@ namespace Ink_Canvas if (dec.Count == 0 && (isSingleFingerDragMode || isInMultiTouchMode)) { + ResetTouchStates(); return; }