From 7c8f1b05e8d2b4aa1717e623eb683337e6f1dced Mon Sep 17 00:00:00 2001 From: Ludovic Fauvet Date: Tue, 11 Nov 2008 11:37:34 +0100 Subject: [PATCH] Fix a cursor selection bug in the Messages logs (see #2163) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Also introduce a smart selection where the selection is restored after text is inserted. Signed-off-by: Rémi Denis-Courmont --- modules/gui/qt4/dialogs/messages.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/gui/qt4/dialogs/messages.cpp b/modules/gui/qt4/dialogs/messages.cpp index 46aa53b7aa..dd8d9fe69b 100644 --- a/modules/gui/qt4/dialogs/messages.cpp +++ b/modules/gui/qt4/dialogs/messages.cpp @@ -166,7 +166,11 @@ void MessagesDialog::sinkMessage (msg_item_t *item, unsigned) || (item->i_type == VLC_MSG_DBG && verbosityBox->value() < 2 )) return; - messages->textCursor().movePosition( QTextCursor::End ); + // Saving cursor selection + int startPos = messages->textCursor().selectionStart(); + int endPos = messages->textCursor().selectionEnd(); + + messages->moveCursor( QTextCursor::End ); messages->setFontItalic( true ); messages->setTextColor( "darkBlue" ); messages->insertPlainText( qfu( item->psz_module ) ); @@ -198,6 +202,13 @@ void MessagesDialog::sinkMessage (msg_item_t *item, unsigned) messages->insertPlainText( qfu(item->psz_msg) ); messages->insertPlainText( "\n" ); messages->ensureCursorVisible(); + + // Restoring saved cursor selection + QTextCursor cur = messages->textCursor(); + cur.movePosition( QTextCursor::Start ); + cur.movePosition( QTextCursor::NextCharacter, QTextCursor::MoveAnchor, startPos ); + cur.movePosition( QTextCursor::NextCharacter, QTextCursor::KeepAnchor, endPos - startPos ); + messages->setTextCursor( cur ); } void MessagesDialog::buildTree( QTreeWidgetItem *parentItem, -- 2.39.5