From 0ecc0444784a2e8e1cd75f358eebe0713f347e39 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 26 Apr 2017 10:48:48 +0200 Subject: [PATCH] TextEditor: Add delete(Start/End)OfLine actions Task-number: QTCREATORBUG-18095 Change-Id: I75e6141687ba5e96ef59384b302357700f79dd55 Reviewed-by: Leena Miettinen Reviewed-by: Eike Ziller --- src/plugins/texteditor/texteditor.cpp | 14 ++++++++++++++ src/plugins/texteditor/texteditor.h | 2 ++ src/plugins/texteditor/texteditoractionhandler.cpp | 8 ++++++++ src/plugins/texteditor/texteditorconstants.h | 2 ++ 4 files changed, 26 insertions(+) diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index c60cf1c2596..99470287e66 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -6264,6 +6264,13 @@ void TextEditorWidget::deleteLine() textCursor().removeSelectedText(); } +void TextEditorWidget::deleteEndOfLine() +{ + moveCursor(QTextCursor::EndOfLine, QTextCursor::KeepAnchor); + textCursor().removeSelectedText(); + setTextCursor(textCursor()); +} + void TextEditorWidget::deleteEndOfWord() { moveCursor(QTextCursor::EndOfWord, QTextCursor::KeepAnchor); @@ -6279,6 +6286,13 @@ void TextEditorWidget::deleteEndOfWordCamelCase() setTextCursor(c); } +void TextEditorWidget::deleteStartOfLine() +{ + moveCursor(QTextCursor::StartOfLine, QTextCursor::KeepAnchor); + textCursor().removeSelectedText(); + setTextCursor(textCursor()); +} + void TextEditorWidget::deleteStartOfWord() { moveCursor(QTextCursor::StartOfWord, QTextCursor::KeepAnchor); diff --git a/src/plugins/texteditor/texteditor.h b/src/plugins/texteditor/texteditor.h index a56d0b2a9a7..5da0df549ff 100644 --- a/src/plugins/texteditor/texteditor.h +++ b/src/plugins/texteditor/texteditor.h @@ -359,8 +359,10 @@ public: void duplicateSelection(); void duplicateSelectionAndComment(); void deleteLine(); + void deleteEndOfLine(); void deleteEndOfWord(); void deleteEndOfWordCamelCase(); + void deleteStartOfLine(); void deleteStartOfWord(); void deleteStartOfWordCamelCase(); void unfoldAll(); diff --git a/src/plugins/texteditor/texteditoractionhandler.cpp b/src/plugins/texteditor/texteditoractionhandler.cpp index 8ecf74daec3..3a759f102b1 100644 --- a/src/plugins/texteditor/texteditoractionhandler.cpp +++ b/src/plugins/texteditor/texteditoractionhandler.cpp @@ -145,8 +145,10 @@ public: QAction *m_duplicateSelectionAction = nullptr; QAction *m_duplicateSelectionAndCommentAction = nullptr; QAction *m_deleteLineAction = nullptr; + QAction *m_deleteEndOfLineAction = nullptr; QAction *m_deleteEndOfWordAction = nullptr; QAction *m_deleteEndOfWordCamelCaseAction = nullptr; + QAction *m_deleteStartOfLineAction = nullptr; QAction *m_deleteStartOfWordAction = nullptr; QAction *m_deleteStartOfWordCamelCaseAction = nullptr; QAction *m_selectEncodingAction = nullptr; @@ -224,10 +226,14 @@ void TextEditorActionHandlerPrivate::createActions() [this] (TextEditorWidget *widget) { widget->print(Core::ICore::printer()); }); m_deleteLineAction = registerAction(DELETE_LINE, [this] (TextEditorWidget *w) { w->deleteLine(); }, true, tr("Delete &Line")); + m_deleteEndOfLineAction = registerAction(DELETE_END_OF_LINE, + [this] (TextEditorWidget *w) { w->deleteEndOfLine(); }, true, tr("Delete Line from Cursor On")); m_deleteEndOfWordAction = registerAction(DELETE_END_OF_WORD, [this] (TextEditorWidget *w) { w->deleteEndOfWord(); }, true, tr("Delete Word from Cursor On")); m_deleteEndOfWordCamelCaseAction = registerAction(DELETE_END_OF_WORD_CAMEL_CASE, [this] (TextEditorWidget *w) { w->deleteEndOfWordCamelCase(); }, true, tr("Delete Word Camel Case from Cursor On")); + m_deleteStartOfLineAction = registerAction(DELETE_START_OF_LINE, + [this] (TextEditorWidget *w) { w->deleteStartOfLine(); }, true, tr("Delete Line up to Cursor")); m_deleteStartOfWordAction = registerAction(DELETE_START_OF_WORD, [this] (TextEditorWidget *w) { w->deleteStartOfWord(); }, true, tr("Delete Word up to Cursor")); m_deleteStartOfWordCamelCaseAction = registerAction(DELETE_START_OF_WORD_CAMEL_CASE, @@ -463,8 +469,10 @@ void TextEditorActionHandlerPrivate::createActions() m_modifyingActions << m_unCommentSelectionAction; m_modifyingActions << m_cutLineAction; m_modifyingActions << m_deleteLineAction; + m_modifyingActions << m_deleteEndOfLineAction; m_modifyingActions << m_deleteEndOfWordAction; m_modifyingActions << m_deleteEndOfWordCamelCaseAction; + m_modifyingActions << m_deleteStartOfLineAction; m_modifyingActions << m_deleteStartOfWordAction; m_modifyingActions << m_deleteStartOfWordCamelCaseAction; m_modifyingActions << m_moveLineUpAction; diff --git a/src/plugins/texteditor/texteditorconstants.h b/src/plugins/texteditor/texteditorconstants.h index 9b392e39807..e807d45c16f 100644 --- a/src/plugins/texteditor/texteditorconstants.h +++ b/src/plugins/texteditor/texteditorconstants.h @@ -148,8 +148,10 @@ const char DUPLICATE_SELECTION[] = "TextEditor.DuplicateSelection"; const char DUPLICATE_SELECTION_AND_COMMENT[] = "TextEditor.DuplicateSelectionAndComment"; const char DELETE_LINE[] = "TextEditor.DeleteLine"; const char DELETE_END_OF_WORD[] = "TextEditor.DeleteEndOfWord"; +const char DELETE_END_OF_LINE[] = "TextEditor.DeleteEndOfLine"; const char DELETE_END_OF_WORD_CAMEL_CASE[] = "TextEditor.DeleteEndOfWordCamelCase"; const char DELETE_START_OF_WORD[] = "TextEditor.DeleteStartOfWord"; +const char DELETE_START_OF_LINE[] = "TextEditor.DeleteStartOfLine"; const char DELETE_START_OF_WORD_CAMEL_CASE[] = "TextEditor.DeleteStartOfWordCamelCase"; const char SELECT_ENCODING[] = "TextEditor.SelectEncoding"; const char REWRAP_PARAGRAPH[] = "TextEditor.RewrapParagraph";