summaryrefslogtreecommitdiffstats
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
parent47d1546adfee1ee1c6b44906b7f3a80aecd6f354 (diff)
Remove ui flickering when adding new timeline events
-rw-r--r--Makefile2
-rw-r--r--include/TimelineView.h2
-rw-r--r--src/ChatPage.cc5
-rw-r--r--src/TimelineView.cc20
4 files changed, 14 insertions, 15 deletions
diff --git a/Makefile b/Makefile
index ba116307..b4f3f470 100644
--- a/Makefile
+++ b/Makefile
@@ -9,7 +9,7 @@ debug:
@cmake --build build
release-debug:
- @cmake -DBUILD_TESTS=OFF -H. -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ @cmake -DBUILD_TESTS=OFF -H. -GNinja -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo
@cmake --build build
test:
diff --git a/include/TimelineView.h b/include/TimelineView.h
index 6ca91211..f25bc570 100644
--- a/include/TimelineView.h
+++ b/include/TimelineView.h
@@ -145,7 +145,7 @@ private:
bool isTimelineFinished = false;
bool isInitialSync = true;
- const int SCROLL_BAR_GAP = 400;
+ const int SCROLL_BAR_GAP = 200;
QTimer *paginationTimer_;
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;