diff options
| author | David Schulz <david.schulz@qt.io> | 2021-06-28 09:13:57 +0200 |
|---|---|---|
| committer | David Schulz <david.schulz@qt.io> | 2021-09-27 10:56:54 +0000 |
| commit | c00330f905ee450949b96e201944e7f528c265d3 (patch) | |
| tree | 2c5048c1cd9ee4f2b05b73d3b7448f932471d15a /src/libs/utils/camelcasecursor.cpp | |
| parent | eefb3859187349003be3d30fc529c27d300c37d4 (diff) | |
| download | qt-creator-c00330f905ee450949b96e201944e7f528c265d3.tar.gz | |
Editor: multi cursor support
Adding a way to create multiple cursors that can insert/remove text at
arbitrary positions in the document. Adding cursors is done by pressing
alt + up/down or by clicking into the editor while holding the alt key.
Fixes: QTCREATORBUG-16013
Change-Id: I495d27d95a3d277220946616ef30efc241da0120
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Artem Sokolovskii <artem.sokolovskii@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/libs/utils/camelcasecursor.cpp')
| -rw-r--r-- | src/libs/utils/camelcasecursor.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/libs/utils/camelcasecursor.cpp b/src/libs/utils/camelcasecursor.cpp index 65e69bd70b..65d4693e2b 100644 --- a/src/libs/utils/camelcasecursor.cpp +++ b/src/libs/utils/camelcasecursor.cpp @@ -26,9 +26,13 @@ #include "camelcasecursor.h" +#include "multitextcursor.h" + #include <QLineEdit> #include <QPlainTextEdit> +namespace Utils { + template<typename C, typename E> bool moveCursor(C *cursor, E *edit, QTextCursor::MoveOperation direction, QTextCursor::MoveMode mode); @@ -323,6 +327,15 @@ bool CamelCaseCursor::left(QTextCursor *cursor, QPlainTextEdit *edit, QTextCurso return camelCaseLeft(cursor, edit, mode); } +bool CamelCaseCursor::left(MultiTextCursor *cursor, QPlainTextEdit *edit, QTextCursor::MoveMode mode) +{ + bool result = false; + for (QTextCursor &c : *cursor) + result |= CamelCaseCursor::left(&c, edit, mode); + cursor->mergeCursors(); + return result; +} + bool CamelCaseCursor::left(QLineEdit *edit, QTextCursor::MoveMode mode) { QTextCursor temp; @@ -334,8 +347,20 @@ bool CamelCaseCursor::right(QTextCursor *cursor, QPlainTextEdit *edit, QTextCurs return camelCaseRight(cursor, edit, mode); } +bool CamelCaseCursor::right(MultiTextCursor *cursor, QPlainTextEdit *edit, QTextCursor::MoveMode mode) +{ + bool result = false; + for (QTextCursor &c : *cursor) + result |= CamelCaseCursor::right(&c, edit, mode); + cursor->mergeCursors(); + return result; +} + bool CamelCaseCursor::right(QLineEdit *edit, QTextCursor::MoveMode mode) { QTextCursor temp; return camelCaseRight(&temp, edit, mode); } + +} // namespace Utils + |
