From 7c3d3976eeac578db0c2ddf3522617840ad2324d Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 25 May 2014 16:42:36 -0700 Subject: [PATCH] Fix chat window scrolling to stay at bottom Stay at bottom window when: - There is new chat. - People come and go from online list. - Chat window hides and restores when application focus changes. - Interface is minimized and restored. --- interface/src/ui/ChatWindow.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/interface/src/ui/ChatWindow.cpp b/interface/src/ui/ChatWindow.cpp index 1cf45ab81b..2f044739df 100644 --- a/interface/src/ui/ChatWindow.cpp +++ b/interface/src/ui/ChatWindow.cpp @@ -248,6 +248,7 @@ void ChatWindow::notificationClicked() { return; } } + Application::processEvents(); scrollToBottom(); } @@ -262,6 +263,8 @@ void ChatWindow::error(QXmppClient::Error error) { } void ChatWindow::participantsChanged() { + bool atBottom = isNearBottom(); + QStringList participants = XmppClient::getInstance().getPublicChatRoom()->participants(); ui->numOnlineLabel->setText(tr("%1 online now:").arg(participants.count())); @@ -288,6 +291,11 @@ void ChatWindow::participantsChanged() { userLabel->installEventFilter(this); ui->usersWidget->layout()->addWidget(userLabel); } + Application::processEvents(); + + if (atBottom) { + scrollToBottom(); + } } void ChatWindow::messageReceived(const QXmppMessage& message) {