From 42733eeb86b034f458ae354213b40b58911e4847 Mon Sep 17 00:00:00 2001 From: Hawkheart Date: Tue, 20 Mar 2018 02:59:00 -0400 Subject: [PATCH] TimelineView: remove unneeded date separators when deleting a redacted message (#279) fixes #276 --- src/timeline/TimelineView.cc | 21 +++++++++++++++++---- 1 file 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(relativeWidget(removedItem, -1)); - auto nextItem = qobject_cast(relativeWidget(removedItem, 1)); + auto prevWidget = relativeWidget(removedItem, -1); + auto nextWidget = relativeWidget(removedItem, 1); + + // See if they are timeline items + auto prevItem = qobject_cast(prevWidget); + auto nextItem = qobject_cast(nextWidget); + + // ... or a date separator + auto prevLabel = qobject_cast(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();