diff --git a/app/widget/marker/marker.cpp b/app/widget/marker/marker.cpp index 255a7934c..0d49b70fa 100644 --- a/app/widget/marker/marker.cpp +++ b/app/widget/marker/marker.cpp @@ -47,6 +47,14 @@ void Marker::SetActive(bool active) { active_ = active; + // Feels very hacky, might it be better to write some access methods? + if (active) { + TimelineWidget *timeline = dynamic_cast(parent()->parent()); + if (timeline) { + static_cast(parent()->parent())->DeselectAll(); + } + } + update(); } @@ -109,9 +117,6 @@ void Marker::mousePressEvent(QMouseEvent* e) update(); } - - // Feels very hacky, might it be better to write some access methods? - static_cast(parent()->parent())->DeselectAll(); } void Marker::ShowContextMenu() { diff --git a/app/widget/timelinewidget/timelinewidget.cpp b/app/widget/timelinewidget/timelinewidget.cpp index cab49be8c..be6c68d1c 100644 --- a/app/widget/timelinewidget/timelinewidget.cpp +++ b/app/widget/timelinewidget/timelinewidget.cpp @@ -475,6 +475,10 @@ void TimelineWidget::ReplaceBlocksWithGaps(const QVector &blocks, void TimelineWidget::DeleteSelected(bool ripple) { + if (ruler()->GetActiveTimelineMarkers().size() > 0) { + ruler()->DeleteSelected(); + return; + } QVector selected_list = GetSelectedBlocks(); QVector blocks_to_delete; diff --git a/app/widget/timeruler/seekablewidget.cpp b/app/widget/timeruler/seekablewidget.cpp index 8b0eff063..7a1b66726 100644 --- a/app/widget/timeruler/seekablewidget.cpp +++ b/app/widget/timeruler/seekablewidget.cpp @@ -69,6 +69,7 @@ void SeekableWidget::ConnectTimelinePoints(TimelinePoints *points) connect(timeline_points_->markers(), &TimelineMarkerList::MarkerRemoved, this, static_cast(&SeekableWidget::update)); connect(timeline_points_->markers(), &TimelineMarkerList::MarkerAdded, this, &SeekableWidget::addMarker); + connect(timeline_points_->markers(), &TimelineMarkerList::MarkerRemoved, this, &SeekableWidget::removeMarker); } if (timeline_points() && !timeline_points()->markers()->list().isEmpty()) { @@ -89,6 +90,15 @@ void SeekableWidget::SetSnapService(SnapService *service) snap_service_ = service; } +void SeekableWidget::DeleteSelected() { + foreach (TimelineMarker *marker, GetActiveTimelineMarkers()) { + //marker_map_.value(marker)->deleteLater(); + //marker_map_.take(marker); + timeline_points()->markers()->RemoveMarker(marker); + // GetActiveMarkers().value(marker)->deleteLater(); + } +} + const int &SeekableWidget::GetScroll() const { return scroll_; @@ -189,6 +199,12 @@ void SeekableWidget::addMarker(TimelineMarker* marker) } } +void SeekableWidget::removeMarker(TimelineMarker *marker) +{ + marker_map_.value(marker)->deleteLater(); + marker_map_.take(marker); +} + void SeekableWidget::SetMarkerColor(int c) { foreach(TimelineMarker* marker, GetActiveTimelineMarkers()) { diff --git a/app/widget/timeruler/seekablewidget.h b/app/widget/timeruler/seekablewidget.h index 8bf0704ac..05d9a81bb 100644 --- a/app/widget/timeruler/seekablewidget.h +++ b/app/widget/timeruler/seekablewidget.h @@ -53,7 +53,7 @@ public: return dragging_; } - virtual void DeleteSelected(){}; + void DeleteSelected(); QVector GetActiveTimelineMarkers(); @@ -68,6 +68,8 @@ public slots: void addMarker(TimelineMarker* marker); + void removeMarker(TimelineMarker* marker); + void updateMarkerPositions(); void SetMarkerColor(int c); diff --git a/app/widget/timeruler/timeruler.cpp b/app/widget/timeruler/timeruler.cpp index 52b9c7891..db887fe7e 100644 --- a/app/widget/timeruler/timeruler.cpp +++ b/app/widget/timeruler/timeruler.cpp @@ -83,14 +83,6 @@ void TimeRuler::SetPlaybackCache(PlaybackCache *cache) update(); } -void TimeRuler::DeleteSelected() -{ - foreach(TimelineMarker* marker, GetActiveTimelineMarkers()) { - timeline_points()->markers()->RemoveMarker(marker); - //GetActiveMarkers().value(marker)->deleteLater(); - } -} - void TimeRuler::paintEvent(QPaintEvent *) { // Nothing to paint if the timebase is invalid diff --git a/app/widget/timeruler/timeruler.h b/app/widget/timeruler/timeruler.h index 3c96df559..77a7b3b82 100644 --- a/app/widget/timeruler/timeruler.h +++ b/app/widget/timeruler/timeruler.h @@ -41,8 +41,6 @@ public: void SetPlaybackCache(PlaybackCache* cache); - virtual void DeleteSelected() override; - protected: virtual void paintEvent(QPaintEvent* e) override;