]> git.sesse.net Git - kdenlive/blobdiff - src/customtrackview.cpp
Fix dvd wizard crash:
[kdenlive] / src / customtrackview.cpp
index cd49a86b41ad2b8d14deed6476af7d650c41c1a6..541dddd375596fe3d542300bab752ee094cd9ee8 100644 (file)
@@ -143,7 +143,7 @@ CustomTrackView::CustomTrackView(KdenliveDoc *doc, CustomTrackScene* projectscen
 
     QPen pen1 = QPen();
     pen1.setWidth(1);
-    pen1.setColor(Qt::black);
+    pen1.setColor(palette().text().color());
     m_cursorLine->setPen(pen1);
     m_cursorLine->setFlag(QGraphicsItem::ItemIgnoresTransformations, true);
 
@@ -1484,7 +1484,7 @@ void CustomTrackView::slotAddGroupEffect(QDomElement effect, AbstractGroupItem *
                 if (item->isAudioOnly() || item->clipType() == AUDIO) continue;
             }
 
-            if (item->hasEffect(effect.attribute("tag"), effect.attribute("id")) != -1 && effect.attribute("unique", "0") != "0") {
+            if (effect.attribute("unique", "0") != "0" && item->hasEffect(effect.attribute("tag"), effect.attribute("id")) != -1) {
                 emit displayMessage(i18n("Effect already present in clip"), ErrorMessage);
                 continue;
             }
@@ -3853,7 +3853,7 @@ void CustomTrackView::updatePositionEffects(ClipItem * item, ItemInfo info)
         // Freeze effect needs to be adjusted with clip resize
         int diff = (info.startPos - item->startPos()).frames(m_document->fps());
         QDomElement eff = item->getEffectAt(effectPos);
-        if (!eff.isNull()) {
+        if (!eff.isNull() && diff != 0) {
             int freeze_pos = EffectsList::parameter(eff, "frame").toInt() + diff;
             EffectsList::setParameter(eff, "frame", QString::number(freeze_pos));
             if (item->isSelected() && item->selectedEffect().attribute("id") == "freeze") {
@@ -4444,11 +4444,20 @@ void CustomTrackView::pasteClipEffects()
         if (clips.at(i)->type() == AVWIDGET) {
             ClipItem *item = static_cast < ClipItem *>(clips.at(i));
             for (int j = 0; j < clip->effectsCount(); j++) {
-                new AddEffectCommand(this, m_document->tracksCount() - item->track(), item->startPos(), clip->effectAt(j), true, paste);
+                QDomElement eff = clip->effectAt(j);
+                if (eff.attribute("unique", "0") == "0" || item->hasEffect(eff.attribute("tag"), eff.attribute("id")) == -1) {
+                    new AddEffectCommand(this, m_document->tracksCount() - item->track(), item->startPos(), eff, true, paste);
+                }
             }
         }
     }
     m_commandStack->push(paste);
+
+    // adjust effects (fades, ...)
+    for (int i = 0; i < clips.count(); ++i) {
+        ClipItem *item = static_cast < ClipItem *>(clips.at(i));
+        updatePositionEffects(item, item->info());
+    }
 }