Skip to content
Snippets Groups Projects
Commit ac8e42b9 authored by Konstantinos Sideris's avatar Konstantinos Sideris
Browse files

Reduce timeline flickering

parent 76ddfb79
No related branches found
No related tags found
No related merge requests found
......@@ -140,10 +140,9 @@ private:
bool isPaginationInProgress_ = false;
// Keeps track whether or not the user has visited the view.
bool isInitialized = false;
bool isTimelineFinished = false;
bool isInitialSync = true;
bool isPaginationScrollPending_ = false;
bool isInitialized = false;
bool isTimelineFinished = false;
bool isInitialSync = true;
const int SCROLL_BAR_GAP = 400;
......
......@@ -85,19 +85,15 @@ TimelineView::sliderRangeChanged(int min, int max)
if (max - scroll_area_->verticalScrollBar()->value() < SCROLL_BAR_GAP)
scroll_area_->verticalScrollBar()->setValue(max);
if (isPaginationScrollPending_) {
isPaginationScrollPending_ = false;
int currentHeight = scroll_widget_->size().height();
int diff = currentHeight - oldHeight_;
int newPosition = oldPosition_ + diff;
int currentHeight = scroll_widget_->size().height();
int diff = currentHeight - oldHeight_;
int newPosition = oldPosition_ + diff;
// Keep the scroll bar to the bottom if it hasn't been activated yet.
if (oldPosition_ == 0 && !scroll_area_->verticalScrollBar()->isVisible())
newPosition = max;
// Keep the scroll bar to the bottom if it hasn't been activated yet.
if (oldPosition_ == 0 && !scroll_area_->verticalScrollBar()->isVisible())
newPosition = max;
scroll_area_->verticalScrollBar()->setValue(newPosition);
}
scroll_area_->verticalScrollBar()->setValue(newPosition);
}
void
......@@ -173,6 +169,9 @@ 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();
......@@ -195,9 +194,8 @@ TimelineView::addBackwardsEvents(const QString &room_id, const RoomMessages &msg
for (const auto &item : items)
addTimelineItem(item, TimelineDirection::Top);
prev_batch_token_ = msgs.end();
isPaginationInProgress_ = false;
isPaginationScrollPending_ = true;
prev_batch_token_ = msgs.end();
isPaginationInProgress_ = false;
// Exclude the top stretch.
if (!msgs.chunk().isEmpty() && scroll_layout_->count() > 1)
......@@ -465,6 +463,9 @@ TimelineView::addTimelineItem(TimelineItem *item, TimelineDirection direction)
scroll_layout_->addWidget(item);
else
scroll_layout_->insertWidget(1, item);
scroll_widget_->adjustSize();
scroll_widget_->update();
}
void
......@@ -488,6 +489,9 @@ 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();
lastSender_ = user_id;
PendingMessage message(txn_id, body, "", view_item);
......@@ -506,6 +510,9 @@ 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();
lastSender_ = user_id;
PendingMessage message(txn_id, url, "", view_item);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment