chat view scrollbar locking fix

This commit is contained in:
Max-Wilhelm Bruker 2011-08-02 21:49:12 +02:00
parent 3ff5158b6f
commit b2ba83acb1

View file

@ -34,12 +34,15 @@ QTextCursor ChatView::prepareBlock(bool same)
void ChatView::appendHtml(const QString &html) void ChatView::appendHtml(const QString &html)
{ {
bool atBottom = verticalScrollBar()->value() >= verticalScrollBar()->maximum();
prepareBlock().insertHtml(html); prepareBlock().insertHtml(html);
if (atBottom)
verticalScrollBar()->setValue(verticalScrollBar()->maximum()); verticalScrollBar()->setValue(verticalScrollBar()->maximum());
} }
void ChatView::appendMessage(QString sender, QString message, QColor playerColor, bool playerBold) void ChatView::appendMessage(QString sender, QString message, QColor playerColor, bool playerBold)
{ {
bool atBottom = verticalScrollBar()->value() >= verticalScrollBar()->maximum();
bool sameSender = (sender == lastSender) && !lastSender.isEmpty(); bool sameSender = (sender == lastSender) && !lastSender.isEmpty();
QTextCursor cursor = prepareBlock(sameSender); QTextCursor cursor = prepareBlock(sameSender);
lastSender = sender; lastSender = sender;
@ -120,6 +123,7 @@ void ChatView::appendMessage(QString sender, QString message, QColor playerColor
if (!message.isEmpty()) if (!message.isEmpty())
cursor.insertText(message); cursor.insertText(message);
if (atBottom)
verticalScrollBar()->setValue(verticalScrollBar()->maximum()); verticalScrollBar()->setValue(verticalScrollBar()->maximum());
} }