summaryrefslogtreecommitdiff
path: root/src/libs/utils/camelcasecursor.cpp
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2021-06-28 09:13:57 +0200
committerDavid Schulz <david.schulz@qt.io>2021-09-27 10:56:54 +0000
commitc00330f905ee450949b96e201944e7f528c265d3 (patch)
tree2c5048c1cd9ee4f2b05b73d3b7448f932471d15a /src/libs/utils/camelcasecursor.cpp
parenteefb3859187349003be3d30fc529c27d300c37d4 (diff)
downloadqt-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.cpp25
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
+