diff --git a/src/SessionController.cpp b/src/SessionController.cpp --- a/src/SessionController.cpp +++ b/src/SessionController.cpp @@ -990,9 +990,7 @@ } void SessionController::selectAll() { - ScreenWindow * screenWindow = _view->screenWindow(); - screenWindow->setSelectionByLineRange(0, _session->emulation()->lineCount()); - _view->copyToX11Selection(); + _view->selectAll(); } void SessionController::selectLine() { diff --git a/src/TerminalDisplay.h b/src/TerminalDisplay.h --- a/src/TerminalDisplay.h +++ b/src/TerminalDisplay.h @@ -528,6 +528,11 @@ // Select the current line. void selectCurrentLine(); + /** + * Selects everything in the terminal + */ + void selectAll(); + void printContent(QPainter &painter, bool friendly); /** diff --git a/src/TerminalDisplay.cpp b/src/TerminalDisplay.cpp --- a/src/TerminalDisplay.cpp +++ b/src/TerminalDisplay.cpp @@ -380,7 +380,7 @@ , _actSel(0) , _wordSelectionMode(false) , _lineSelectionMode(false) - , _preserveLineBreaks(false) + , _preserveLineBreaks(true) , _columnSelectionMode(false) , _autoCopySelectedText(false) , _copyTextAsHTML(true) @@ -3076,6 +3076,17 @@ selectLine(cursorPosition(), true); } +void TerminalDisplay::selectAll() +{ + if (_screenWindow.isNull()) { + return; + } + + _preserveLineBreaks = true; + _screenWindow->setSelectionByLineRange(0, _screenWindow->lineCount()); + copyToX11Selection(); +} + bool TerminalDisplay::focusNextPrevChild(bool next) { // for 'Tab', always disable focus switching among widgets