]> git.sesse.net Git - kdenlive/blobdiff - src/customtrackview.cpp
Enable split audio and other audio actions only when a clip with audio is selected
[kdenlive] / src / customtrackview.cpp
index 7a7d041f4e124a53583a5a498494ce8f0b5c41dc..dd7e178198f4532d9cdfb4046afd7daa4b72308f 100644 (file)
@@ -236,6 +236,8 @@ void CustomTrackView::setContextMenu(QMenu *timeline, QMenu *clip, QMenu *transi
     for (int i = 0; i < list.count(); i++) {
         if (list.at(i)->data().toString() == "paste_effects") m_pasteEffectsAction = list.at(i);
         else if (list.at(i)->data().toString() == "ungroup_clip") m_ungroupAction = list.at(i);
+       else if (list.at(i)->data().toString() == "A") m_audioActions.append(list.at(i));
+       else if (list.at(i)->data().toString() == "A+V") m_avActions.append(list.at(i));
     }
 
     m_timelineContextTransitionMenu = transition;
@@ -774,7 +776,7 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event)
     m_dragGuide = NULL;
 
     if (m_tool != RAZORTOOL) activateMonitor();
-    else if (m_document->renderer()->playSpeed() != 0.0) {
+    else if (m_document->renderer()->isPlaying()) {
         m_document->renderer()->pause();
         return;
     }
@@ -2376,8 +2378,12 @@ ClipItem *CustomTrackView::cutClip(ItemInfo info, GenTime cutTime, bool cut, boo
         m_document->updateClip(item->baseClip()->getId());
         setDocumentModified();
         KdenliveSettings::setSnaptopoints(snap);
-        if (execute && item->isSelected())
-            emit clipItemSelected(item);
+        if (execute && item->isSelected()) {
+           m_scene->clearSelection();
+           dup->setSelected(true);
+           m_dragItem = dup;
+            emit clipItemSelected(dup);
+       }
         return dup;
     } else {
         // uncut clip
@@ -6913,9 +6919,27 @@ void CustomTrackView::doChangeClipType(const GenTime &pos, int track, bool video
 
 void CustomTrackView::updateClipTypeActions(ClipItem *clip)
 {
+    bool hasAudio;
+    bool hasAV;
     if (clip == NULL || (clip->clipType() != AV && clip->clipType() != PLAYLIST)) {
         m_clipTypeGroup->setEnabled(false);
+       hasAudio = clip != NULL && clip->clipType() == AUDIO;
+       hasAV = false;
     } else {
+       switch (clip->clipType()) {
+         case AV:
+         case PLAYLIST:
+             hasAudio = true;
+             hasAV = true;
+             break;
+         case AUDIO:
+             hasAudio = true;
+             hasAV = false;
+             break;
+         default:
+             hasAudio = false;
+             hasAV = false;
+       }
         m_clipTypeGroup->setEnabled(true);
         QList <QAction *> actions = m_clipTypeGroup->actions();
         QString lookup;
@@ -6929,6 +6953,13 @@ void CustomTrackView::updateClipTypeActions(ClipItem *clip)
             }
         }
     }
+    
+    for (int i = 0; i < m_audioActions.count(); i++) {
+       m_audioActions.at(i)->setEnabled(hasAudio);
+    }
+    for (int i = 0; i < m_avActions.count(); i++) {
+       m_avActions.at(i)->setEnabled(hasAV);
+    }
 }
 
 void CustomTrackView::slotGoToMarker(QAction *action)