chat view scrollbar locking fix
This commit is contained in:
parent
3ff5158b6f
commit
b2ba83acb1
1 changed files with 6 additions and 2 deletions
|
@ -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);
|
||||||
verticalScrollBar()->setValue(verticalScrollBar()->maximum());
|
if (atBottom)
|
||||||
|
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,7 +123,8 @@ void ChatView::appendMessage(QString sender, QString message, QColor playerColor
|
||||||
if (!message.isEmpty())
|
if (!message.isEmpty())
|
||||||
cursor.insertText(message);
|
cursor.insertText(message);
|
||||||
|
|
||||||
verticalScrollBar()->setValue(verticalScrollBar()->maximum());
|
if (atBottom)
|
||||||
|
verticalScrollBar()->setValue(verticalScrollBar()->maximum());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChatView::enterEvent(QEvent * /*event*/)
|
void ChatView::enterEvent(QEvent * /*event*/)
|
||||||
|
|
Loading…
Reference in a new issue