diff --git a/include/timeline/TimelineView.h b/include/timeline/TimelineView.h
index c120ed69..1ebf6eb7 100644
--- a/include/timeline/TimelineView.h
+++ b/include/timeline/TimelineView.h
@@ -123,6 +123,17 @@ protected:
private:
using TimelineEvent = mtx::events::collections::TimelineEvents;
+ //! HACK: Fixing layout flickering when adding to the bottom
+ //! of the timeline.
+ void pushTimelineItem(TimelineItem *item)
+ {
+ item->hide();
+ QTimer::singleShot(0, this, [=]() {
+ scroll_layout_->addWidget(item);
+ item->show();
+ });
+ };
+
void init();
void addTimelineItem(TimelineItem *item, TimelineDirection direction);
void updateLastSender(const QString &user_id, TimelineDirection direction);
@@ -229,7 +240,8 @@ TimelineView::addUserMessage(const QString &url,
TimelineItem *view_item =
new TimelineItem(widget, local_user_, with_sender, scroll_widget_);
- scroll_layout_->addWidget(view_item);
+
+ pushTimelineItem(view_item);
lastMessageDirection_ = TimelineDirection::Bottom;
diff --git a/src/timeline/TimelineView.cc b/src/timeline/TimelineView.cc
index f4cc2d2e..a085b1e0 100644
--- a/src/timeline/TimelineView.cc
+++ b/src/timeline/TimelineView.cc
@@ -433,7 +433,7 @@ TimelineView::addTimelineItem(TimelineItem *item, TimelineDirection direction)
addDateSeparator(newDate, lastItemPosition);
}
- scroll_layout_->addWidget(item);
+ pushTimelineItem(item);
} else {
// The first item (position 0) is a stretch widget that pushes
// the widgets to the bottom of the page.
@@ -479,7 +479,8 @@ TimelineView::addUserMessage(mtx::events::MessageType ty, const QString &body)
TimelineItem *view_item =
new TimelineItem(ty, local_user_, body, with_sender, scroll_widget_);
- scroll_layout_->addWidget(view_item);
+
+ pushTimelineItem(view_item);
lastMessageDirection_ = TimelineDirection::Bottom;
|