From 54033f4bad3cddeb9f407bece603f3640e91ccf2 Mon Sep 17 00:00:00 2001 From: Till Theato Date: Thu, 3 Jun 2010 21:35:39 +0000 Subject: [PATCH] Do not allow deleting last track (also fixes a related crash) svn path=/trunk/kdenlive/; revision=4500 --- src/customtrackview.cpp | 38 ++++++++++++++++++++------------------ src/customtrackview.h | 6 +++++- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index 3b73087a..2ff23eb3 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -5326,25 +5326,27 @@ void CustomTrackView::slotInsertTrack(int ix) } } -void CustomTrackView::slotDeleteTrack(int ix) -{ - TrackDialog d(m_document, parentWidget()); - d.label->setText(i18n("Delete track")); - d.before_select->setHidden(true); - d.track_nb->setMaximum(m_document->tracksCount() - 1); - d.track_nb->setValue(ix); - d.slotUpdateName(ix); - d.setWindowTitle(i18n("Delete Track")); - d.video_track->setHidden(true); - d.audio_track->setHidden(true); - if (d.exec() == QDialog::Accepted) { - ix = d.track_nb->value(); - TrackInfo info = m_document->trackInfoAt(m_document->tracksCount() - ix - 1); - deleteTimelineTrack(ix, info); - setDocumentModified(); - /*AddTrackCommand* command = new AddTrackCommand(this, ix, info, false); - m_commandStack->push(command);*/ +void CustomTrackView::slotDeleteTrack(int ix, bool dialog) +{ + if (m_document->tracksCount() < 2) return; + if (dialog) { + TrackDialog d(m_document, parentWidget()); + d.label->setText(i18n("Delete track")); + d.before_select->setHidden(true); + d.track_nb->setMaximum(m_document->tracksCount() - 1); + d.track_nb->setValue(ix); + d.slotUpdateName(ix); + d.setWindowTitle(i18n("Delete Track")); + d.video_track->setHidden(true); + d.audio_track->setHidden(true); + if (d.exec() == QDialog::Accepted) + ix = d.track_nb->value(); + else + return; } + TrackInfo info = m_document->trackInfoAt(m_document->tracksCount() - ix - 1); + deleteTimelineTrack(ix, info); + setDocumentModified(); } void CustomTrackView::slotConfigTracks(int ix) diff --git a/src/customtrackview.h b/src/customtrackview.h index 54b27988..f1cc6448 100644 --- a/src/customtrackview.h +++ b/src/customtrackview.h @@ -206,7 +206,11 @@ public slots: void slotUpdateAllThumbs(); void slotCheckPositionScrolling(); void slotInsertTrack(int ix); - void slotDeleteTrack(int ix); + + /** @brief Shows a dialog for selecting a track to delete. + * @param ix Number of the track, which should be pre-selected in the dialog + * @param dialog Show dialog or directly delete track @param ix? */ + void slotDeleteTrack(int ix, bool dialog = true); /** @brief Shows the configure tracks dialog. */ void slotConfigTracks(int ix); void clipNameChanged(const QString id, const QString name); -- 2.39.2