From 4068a69fd8f9d48956daa363bba3446fa030206b Mon Sep 17 00:00:00 2001 From: lJxDabab <1206370306@qq.com> Date: Thu, 18 Jan 2024 16:15:17 +0800 Subject: [PATCH 1/2] fix: Shortcut 'Ctrl + M cursor' move to row indentation not implemented change the logic of the 'Ctrl + M' Shortcut to a normal action. log: Fix the Shortcut 'Ctrl + M cursor' to move to raw indentation Bug: https://pms.uniontech.com/bug-view-233877.html --- src/editor/dtextedit.cpp | 50 +++++++++++++--------------------------- 1 file changed, 16 insertions(+), 34 deletions(-) diff --git a/src/editor/dtextedit.cpp b/src/editor/dtextedit.cpp index 1a970a01d..4af520922 100644 --- a/src/editor/dtextedit.cpp +++ b/src/editor/dtextedit.cpp @@ -882,48 +882,31 @@ void TextEdit::moveToLineIndentation() { // Init cursor and move type. QTextCursor cursor = textCursor(); - auto moveMode = m_cursorMark ? QTextCursor::KeepAnchor : QTextCursor::MoveAnchor; - // Get line start position. - cursor.movePosition(QTextCursor::StartOfBlock, moveMode); + cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); int startColumn = cursor.columnNumber(); - // Get line end position. - cursor.movePosition(QTextCursor::EndOfBlock, moveMode); + cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::MoveAnchor); int endColumn = cursor.columnNumber(); - - // Move to line start first. - cursor.movePosition(QTextCursor::StartOfBlock, moveMode); - int nStartPos = cursor.position(); - - if (nStartPos - 1 < 0) { - nStartPos = 0; - //cursor.setPosition(nStartPos, QTextCursor::MoveAnchor); - cursor.setPosition(nStartPos + 1, moveMode); - } else { - cursor.setPosition(nStartPos - 1, moveMode); - cursor.setPosition(nStartPos, QTextCursor::KeepAnchor); - } - - //cursor.movePosition(QTextCursor::PreviousCharacter,QTextCursor::KeepAnchor); - // Move to first non-blank char of line. + // Move the cursor to line start first while keep the anchor to end of block. + cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); int column = startColumn; - while (column < endColumn) { + while (column < endColumn) + { QChar currentChar = *cursor.selection().toPlainText().data(); - //QChar currentChar = toPlainText().at(std::max(cursor.position() - 1, 0)); - - if (!currentChar.isSpace()) { - //cursor.setPosition(cursor.position(), QTextCursor::MoveAnchor); - cursor.setPosition(cursor.position() - 1, moveMode); + if (!currentChar.isSpace()) + { + //stop and reset anchor while be at row indentation. + cursor.setPosition(cursor.position(), QTextCursor::MoveAnchor); break; - } else { - //cursor.setPosition(cursor.position(), QTextCursor::MoveAnchor); - cursor.setPosition(cursor.position() + 1, moveMode); } - + else + { + //while including 'space',just move ahead. + cursor.setPosition(cursor.position() + 1, QTextCursor::KeepAnchor); + } column++; } - cursor.clearSelection(); setTextCursor(cursor); } @@ -3654,7 +3637,7 @@ void TextEdit::setMark() { bool currentMark = m_cursorMark; bool markCursorChanged = false; - + qWarning()<modifiers(); QString key = Utils::getKeyshortcut(e); - //没有修改键 插入文件 //按下esc的时候,光标退出编辑区,切换至标题栏 if (modifiers == Qt::NoModifier && e->key() == Qt::Key_Escape) { From fbc4b5c42043a228e4c115300c503d2479f31429 Mon Sep 17 00:00:00 2001 From: lJxDabab <1206370306@qq.com> Date: Fri, 19 Jan 2024 09:51:29 +0800 Subject: [PATCH 2/2] fix: Shortcuts Alt + P / N match the help Shortcuts Alt + P / N, left to right match, forbid to match the English quotation marks as brackets Log: this "ALT + P/N" shortcut do not require the English quotation to be considered Bug: https://pms.uniontech.com/bug-view-233883.html --- src/editor/dtextedit.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/editor/dtextedit.cpp b/src/editor/dtextedit.cpp index 4af520922..77ad4a688 100644 --- a/src/editor/dtextedit.cpp +++ b/src/editor/dtextedit.cpp @@ -758,7 +758,7 @@ void TextEdit::forwardPair() setTextCursor(removeSelectionCursor); // Start search. - if (find(QRegExp("[\"'>)}]"))) { + if (find(QRegExp("[\]>)}]"))) { int findPos = textCursor().position(); QTextCursor cursor = textCursor(); @@ -792,7 +792,7 @@ void TextEdit::backwardPair() QTextDocument::FindFlags options; options |= QTextDocument::FindBackward; - if (find(QRegExp("[\"'<({]"), options)) { + if (find(QRegExp("[\[<({]"), options)) { QTextCursor cursor = textCursor(); auto moveMode = m_cursorMark ? QTextCursor::KeepAnchor : QTextCursor::MoveAnchor; @@ -3637,7 +3637,6 @@ void TextEdit::setMark() { bool currentMark = m_cursorMark; bool markCursorChanged = false; - qWarning()<