Reduce timeline flickering

remotes/origin/HEAD
Konstantinos Sideris 7 years ago
parent 76ddfb792b
commit ac8e42b926
  1. 1
      include/TimelineView.h
  2. 17
      src/TimelineView.cc

@ -143,7 +143,6 @@ private:
bool isInitialized = false;
bool isTimelineFinished = false;
bool isInitialSync = true;
bool isPaginationScrollPending_ = false;
const int SCROLL_BAR_GAP = 400;

@ -85,9 +85,6 @@ 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;
@ -98,7 +95,6 @@ TimelineView::sliderRangeChanged(int min, int max)
scroll_area_->verticalScrollBar()->setValue(newPosition);
}
}
void
TimelineView::fetchHistory()
@ -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();
@ -197,7 +196,6 @@ TimelineView::addBackwardsEvents(const QString &room_id, const RoomMessages &msg
prev_batch_token_ = msgs.end();
isPaginationInProgress_ = false;
isPaginationScrollPending_ = true;
// 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);

Loading…
Cancel
Save