diff options
author | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2017-10-21 18:53:15 +0300 |
---|---|---|
committer | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2017-10-21 18:53:15 +0300 |
commit | 3cae6c39831fe6b1e9661fb2af7034105a5f289a (patch) | |
tree | 49ceb3e81b808d60ae0ef7b831043c0c7ffbba85 /src | |
parent | Clean unread count when the user logs out (diff) | |
download | nheko-3cae6c39831fe6b1e9661fb2af7034105a5f289a.tar.xz |
Remove ui flickering when adding new timeline events
Diffstat (limited to 'src')
-rw-r--r-- | src/ChatPage.cc | 5 | ||||
-rw-r--r-- | src/TimelineView.cc | 20 |
2 files changed, 12 insertions, 13 deletions
diff --git a/src/ChatPage.cc b/src/ChatPage.cc index 6d8c7cea..5df8dec2 100644 --- a/src/ChatPage.cc +++ b/src/ChatPage.cc @@ -15,6 +15,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include <QApplication> #include <QDebug> #include <QSettings> @@ -413,6 +414,8 @@ ChatPage::syncCompleted(const SyncResponse &response) if (it.key() == current_room_) changeTopRoomInfo(it.key()); + + QApplication::processEvents(); } auto leave = response.rooms().leave(); @@ -472,6 +475,8 @@ ChatPage::initialSyncCompleted(const SyncResponse &response) if (!url.toString().isEmpty()) AvatarProvider::setAvatarUrl(uid, url); } + + QApplication::processEvents(); } try { diff --git a/src/TimelineView.cc b/src/TimelineView.cc index 615127a4..5463064f 100644 --- a/src/TimelineView.cc +++ b/src/TimelineView.cc @@ -15,6 +15,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include <QApplication> #include <QDebug> #include <QJsonArray> #include <QScrollBar> @@ -96,9 +97,6 @@ TimelineView::sliderRangeChanged(int min, int max) newPosition = max; scroll_area_->verticalScrollBar()->setValue(newPosition); - - scroll_widget_->adjustSize(); - scroll_widget_->update(); } void @@ -174,9 +172,6 @@ TimelineView::addBackwardsEvents(const QString &room_id, const RoomMessages &msg isTimelineFinished = false; QList<TimelineItem *> items; - scroll_widget_->adjustSize(); - scroll_widget_->update(); - // Parse in reverse order to determine where we should not show sender's // name. auto ii = msgs.chunk().size(); @@ -199,6 +194,8 @@ TimelineView::addBackwardsEvents(const QString &room_id, const RoomMessages &msg for (const auto &item : items) addTimelineItem(item, TimelineDirection::Top); + QApplication::processEvents(); + prev_batch_token_ = msgs.end(); isPaginationInProgress_ = false; @@ -352,6 +349,8 @@ TimelineView::addEvents(const Timeline &timeline) } } + QApplication::processEvents(); + if (isInitialSync) { prev_batch_token_ = timeline.previousBatch(); isInitialSync = false; @@ -468,9 +467,6 @@ TimelineView::addTimelineItem(TimelineItem *item, TimelineDirection direction) scroll_layout_->addWidget(item); else scroll_layout_->insertWidget(1, item); - - scroll_widget_->adjustSize(); - scroll_widget_->update(); } void @@ -494,8 +490,7 @@ TimelineView::addUserMessage(matrix::events::MessageEventType ty, const QString TimelineItem *view_item = new TimelineItem(ty, user_id, body, with_sender, scroll_widget_); scroll_layout_->addWidget(view_item); - scroll_widget_->adjustSize(); - scroll_widget_->update(); + QApplication::processEvents(); lastSender_ = user_id; @@ -515,8 +510,7 @@ TimelineView::addUserMessage(const QString &url, const QString &filename, int tx TimelineItem *view_item = new TimelineItem(image, user_id, with_sender, scroll_widget_); scroll_layout_->addWidget(view_item); - scroll_widget_->adjustSize(); - scroll_widget_->update(); + QApplication::processEvents(); lastSender_ = user_id; |