summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-10-21 18:53:15 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-10-21 18:53:15 +0300
commit3cae6c39831fe6b1e9661fb2af7034105a5f289a (patch)
tree49ceb3e81b808d60ae0ef7b831043c0c7ffbba85 /src
parentClean unread count when the user logs out (diff)
downloadnheko-3cae6c39831fe6b1e9661fb2af7034105a5f289a.tar.xz
Remove ui flickering when adding new timeline events
Diffstat (limited to 'src')
-rw-r--r--src/ChatPage.cc5
-rw-r--r--src/TimelineView.cc20
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;