]> git.sesse.net Git - vlc/commitdiff
Qt4: Only scroll messages if required
authorFrancois Cartegnie <fcvlcdev@free.fr>
Tue, 7 Sep 2010 13:25:50 +0000 (15:25 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Tue, 7 Sep 2010 21:08:05 +0000 (23:08 +0200)
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
modules/gui/qt4/dialogs/messages.cpp

index 614db1379e26e8601979893a2aed1584e4bf1289..22848af41116a60ea9ea6130423d182d44fb57de 100644 (file)
@@ -40,6 +40,7 @@
 #include <QMutex>
 #include <QLineEdit>
 #include <QPushButton>
+#include <QScrollBar>
 
 #include <assert.h>
 
@@ -231,6 +232,12 @@ void MessagesDialog::updateConfig()
 
 void MessagesDialog::sinkMessage( msg_item_t *item )
 {
+    /* Only scroll if the viewport is at the end.
+       Don't bug user by auto-changing/loosing viewport on insert(). */
+    bool b_autoscroll = ( messages->verticalScrollBar()->value()
+                          + messages->verticalScrollBar()->pageStep()
+                          >= messages->verticalScrollBar()->maximum() );
+
     /* Copy selected text to the clipboard */
     if( messages->textCursor().hasSelection() )
         messages->copy();
@@ -270,7 +277,7 @@ void MessagesDialog::sinkMessage( msg_item_t *item )
     messages->setTextColor( "black" );
     messages->insertPlainText( qfu(item->psz_msg) );
     messages->insertPlainText( "\n" );
-    messages->ensureCursorVisible();
+    if ( b_autoscroll ) messages->ensureCursorVisible();
 }
 
 void MessagesDialog::customEvent( QEvent *event )