diff --git a/include/eepp/ui/doc/textdocument.hpp b/include/eepp/ui/doc/textdocument.hpp index 60d80cee0..1c825f16d 100644 --- a/include/eepp/ui/doc/textdocument.hpp +++ b/include/eepp/ui/doc/textdocument.hpp @@ -512,6 +512,8 @@ class EE_API TextDocument { void selectAllMatches(); + String getAllSelectedText() const; + protected: friend class UndoStack; diff --git a/src/eepp/ui/doc/textdocument.cpp b/src/eepp/ui/doc/textdocument.cpp index 2e11f3416..db0c8f5f1 100644 --- a/src/eepp/ui/doc/textdocument.cpp +++ b/src/eepp/ui/doc/textdocument.cpp @@ -777,6 +777,19 @@ String TextDocument::getText() const { return getText( getDocRange() ); } +String TextDocument::getAllSelectedText() const { + String text; + for ( size_t i = 0; i < mSelection.size(); ++i ) { + String sel( getSelectedText( i ) ); + if ( !sel.empty() ) { + text += std::move( sel ); + if ( i != mSelection.size() - 1 ) + text += "\n"; + } + } + return text; +} + String TextDocument::getSelectedText() const { return getText( getSelection() ); } diff --git a/src/eepp/ui/uicodeeditor.cpp b/src/eepp/ui/uicodeeditor.cpp index 1f655825c..c1741f634 100644 --- a/src/eepp/ui/uicodeeditor.cpp +++ b/src/eepp/ui/uicodeeditor.cpp @@ -2393,11 +2393,11 @@ void UICodeEditor::unindent() { } void UICodeEditor::copy() { - getUISceneNode()->getWindow()->getClipboard()->setText( mDoc->getSelectedText().toUtf8() ); + getUISceneNode()->getWindow()->getClipboard()->setText( mDoc->getAllSelectedText().toUtf8() ); } void UICodeEditor::cut() { - getUISceneNode()->getWindow()->getClipboard()->setText( mDoc->getSelectedText().toUtf8() ); + getUISceneNode()->getWindow()->getClipboard()->setText( mDoc->getAllSelectedText().toUtf8() ); mDoc->deleteSelection(); }