From 5c331b20ab0ec6f5cd0c7d350e9017cd2f129719 Mon Sep 17 00:00:00 2001 From: Francois Cartegnie Date: Tue, 7 Sep 2010 15:25:50 +0200 Subject: [PATCH] Qt4: Only scroll messages if required Signed-off-by: Jean-Baptiste Kempf --- modules/gui/qt4/dialogs/messages.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/gui/qt4/dialogs/messages.cpp b/modules/gui/qt4/dialogs/messages.cpp index 614db1379e..22848af411 100644 --- a/modules/gui/qt4/dialogs/messages.cpp +++ b/modules/gui/qt4/dialogs/messages.cpp @@ -40,6 +40,7 @@ #include #include #include +#include #include @@ -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 ) -- 2.39.2