]> git.sesse.net Git - vlc/commitdiff
Fix a cursor selection bug in the Messages logs (see #2163)
authorLudovic Fauvet <etix@l0cal.com>
Tue, 11 Nov 2008 10:37:34 +0000 (11:37 +0100)
committerRémi Denis-Courmont <rdenis@simphalempin.com>
Wed, 12 Nov 2008 16:42:41 +0000 (18:42 +0200)
Also introduce a smart selection where the selection is restored after
text is inserted.

Signed-off-by: Rémi Denis-Courmont <rdenis@simphalempin.com>
modules/gui/qt4/dialogs/messages.cpp

index 46aa53b7aa5a89cdb7710d8813f872beb09602c7..dd8d9fe69b3f44988f2d3654419c0accca5e872f 100644 (file)
@@ -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,