TimelineView: remove unneeded date separators when deleting a redacted message (#279)
fixes #276
1 files changed, 17 insertions, 4 deletions
diff --git a/src/timeline/TimelineView.cc b/src/timeline/TimelineView.cc
index c4d31f3a..ce6b061a 100644
--- a/src/timeline/TimelineView.cc
+++ b/src/timeline/TimelineView.cc
@@ -730,15 +730,28 @@ TimelineView::removeEvent(const QString &event_id)
auto removedItem = eventIds_[event_id];
// Find the next and the previous widgets in the timeline
- auto prevItem = qobject_cast<TimelineItem *>(relativeWidget(removedItem, -1));
- auto nextItem = qobject_cast<TimelineItem *>(relativeWidget(removedItem, 1));
+ auto prevWidget = relativeWidget(removedItem, -1);
+ auto nextWidget = relativeWidget(removedItem, 1);
+
+ // See if they are timeline items
+ auto prevItem = qobject_cast<TimelineItem *>(prevWidget);
+ auto nextItem = qobject_cast<TimelineItem *>(nextWidget);
+
+ // ... or a date separator
+ auto prevLabel = qobject_cast<QLabel *>(prevWidget);
// If it's a TimelineItem add an avatar.
- if (prevItem)
+ if (prevItem) {
prevItem->addAvatar();
+ }
- if (nextItem)
+ if (nextItem) {
nextItem->addAvatar();
+ } else if (prevLabel) {
+ // If there's no chat message after this, and we have a label before us, delete the
+ // label.
+ prevLabel->deleteLater();
+ }
// Finally remove the event.
removedItem->deleteLater();
|