diff --git a/ui/timelineheader.cpp b/ui/timelineheader.cpp index 0f1bb5aa7..a1779c85d 100644 --- a/ui/timelineheader.cpp +++ b/ui/timelineheader.cpp @@ -328,11 +328,26 @@ double TimelineHeader::get_zoom() { void TimelineHeader::delete_markers() { if (selected_markers.size() > 0) { + + // Send command to delete selected markers DeleteMarkerAction* dma = new DeleteMarkerAction(viewer->marker_ref); - for (int i=0;imarkers.append(selected_markers.at(i)); - } + dma->markers.append(selected_markers); olive::UndoStack.push(dma); + + // remove any indices for the selected markers that no longer exist + for (int i=0;i= viewer->marker_ref->size()) { + selected_markers.removeAt(i); + i--; + } + } + + // if we removed all the indices, re-select the last marker in the array so something is always selected + // (allows users to hold delete when deleting markers) + if (selected_markers.isEmpty() && !viewer->marker_ref->isEmpty()) { + selected_markers.append(viewer->marker_ref->size() - 1); + } + update_parents(); } }