From 0365eceb1821b9c7dd7fd982e8476e86bce7026f Mon Sep 17 00:00:00 2001 From: MengAiDev Meng <3463526515@qq.com> Date: Mon, 28 Jul 2025 07:33:31 +0000 Subject: [PATCH 1/2] fix(ControlCore): prevent cursor repositioning during mouse selection - Modify the cursor repositioning logic to check if a selection is in progress - Only reposition the cursor when the mouse is used for positioning, not during selection operations --- src/cascadia/TerminalControl/ControlCore.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cascadia/TerminalControl/ControlCore.cpp b/src/cascadia/TerminalControl/ControlCore.cpp index 6a4147637d1..8e34cea4727 100644 --- a/src/cascadia/TerminalControl/ControlCore.cpp +++ b/src/cascadia/TerminalControl/ControlCore.cpp @@ -2071,7 +2071,11 @@ namespace winrt::Microsoft::Terminal::Control::implementation } else if (_settings->RepositionCursorWithMouse()) // This is also mode==Char && !shiftEnabled { - _repositionCursorWithMouse(terminalPosition); + // Don't reposition cursor if this is part of a selection operation + if (!selectionNeedsToBeCopied) + { + _repositionCursorWithMouse(terminalPosition); + } } _updateSelectionUI(); } From b40ff08c7149ff2f6feb3bcb33045a6457656632 Mon Sep 17 00:00:00 2001 From: MengAiDev Meng <3463526515@qq.com> Date: Tue, 29 Jul 2025 03:32:01 +0000 Subject: [PATCH 2/2] make code clear --- src/cascadia/TerminalControl/ControlCore.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/cascadia/TerminalControl/ControlCore.cpp b/src/cascadia/TerminalControl/ControlCore.cpp index 8e34cea4727..544dd266ac1 100644 --- a/src/cascadia/TerminalControl/ControlCore.cpp +++ b/src/cascadia/TerminalControl/ControlCore.cpp @@ -2069,13 +2069,9 @@ namespace winrt::Microsoft::Terminal::Control::implementation _terminal->MultiClickSelection(terminalPosition, mode); selectionNeedsToBeCopied = true; } - else if (_settings->RepositionCursorWithMouse()) // This is also mode==Char && !shiftEnabled + else if (_settings->RepositionCursorWithMouse() && !selectionNeedsToBeCopied) // Don't reposition cursor if this is part of a selection operation { - // Don't reposition cursor if this is part of a selection operation - if (!selectionNeedsToBeCopied) - { - _repositionCursorWithMouse(terminalPosition); - } + _repositionCursorWithMouse(terminalPosition); } _updateSelectionUI(); }