From d7516902c9234ad8a6a4c1919853e04adbcadf61 Mon Sep 17 00:00:00 2001 From: mae Date: Wed, 10 Nov 2010 12:26:18 +0100 Subject: [PATCH] Extend camel-case cursor movement Fix small issue with forward movement, and overwrite deleting to start or end of word (normally Ctrl+Delete and Ctrl+Backspace) Reviewed-by: Erik Verbruggen --- src/plugins/texteditor/basetexteditor.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 56e3b48d9f2..9b9900f5bb1 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -1270,7 +1270,7 @@ bool BaseTextEditor::camelCaseRight(QTextCursor &cursor, QTextCursor::MoveMode m state = 7; break; default: - return cursor.movePosition(QTextCursor::WordRight, mode); + return true; } break; case 4: @@ -1288,7 +1288,7 @@ bool BaseTextEditor::camelCaseRight(QTextCursor &cursor, QTextCursor::MoveMode m state = 7; break; default: - return cursor.movePosition(QTextCursor::WordRight, mode); + return true; } break; case 6: @@ -1299,7 +1299,7 @@ bool BaseTextEditor::camelCaseRight(QTextCursor &cursor, QTextCursor::MoveMode m state = 7; break; default: - return cursor.movePosition(QTextCursor::WordRight, mode); + return true; } break; case 7: @@ -1577,7 +1577,7 @@ void BaseTextEditor::keyPressEvent(QKeyEvent *e) e->accept(); QTextCursor c = textCursor(); int pos = c.position(); - c.movePosition(QTextCursor::PreviousWord); + camelCaseLeft(c, QTextCursor::MoveAnchor); int targetpos = c.position(); forever { handleBackspaceKey(); @@ -1587,6 +1587,18 @@ void BaseTextEditor::keyPressEvent(QKeyEvent *e) pos = cpos; } return; + } else if (!ro && e == QKeySequence::DeleteStartOfWord && !textCursor().hasSelection()) { + e->accept(); + QTextCursor c = textCursor(); + camelCaseLeft(c, QTextCursor::KeepAnchor); + c.removeSelectedText(); + return; + } else if (!ro && e == QKeySequence::DeleteEndOfWord && !textCursor().hasSelection()) { + e->accept(); + QTextCursor c = textCursor(); + camelCaseRight(c, QTextCursor::KeepAnchor); + c.removeSelectedText(); + return; } else switch (e->key()) {