]> git.sesse.net Git - kdenlive/commitdiff
Fix pasting fade effect in a group
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 19 Jun 2012 20:21:15 +0000 (22:21 +0200)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 19 Jun 2012 20:22:22 +0000 (22:22 +0200)
src/clipitem.cpp
src/effectstack/effectstackview2.cpp

index 3f342969f8c88c9054a23dd59a90a829addab518..fa7afdae02fbd4483b7bcee9631d452ac7bec90e 100644 (file)
@@ -283,7 +283,7 @@ void ClipItem::initEffect(QDomElement effect, int diff, int offset)
             int start = end;
             if (effect.attribute("id") == "fadeout") {
                 if (m_effectList.hasEffect(QString(), "fade_to_black") == -1) {
-                    int effectDuration = EffectsList::parameter(effect, "in").toInt();
+                    int effectDuration = EffectsList::parameter(effect, "out").toInt() - EffectsList::parameter(effect, "in").toInt();
                     if (effectDuration > cropDuration().frames(m_fps)) {
                         effectDuration = cropDuration().frames(m_fps) / 2;
                     }
@@ -294,7 +294,7 @@ void ClipItem::initEffect(QDomElement effect, int diff, int offset)
                 }
             } else if (effect.attribute("id") == "fade_to_black") {
                 if (m_effectList.hasEffect(QString(), "fadeout") == -1) {
-                    int effectDuration = EffectsList::parameter(effect, "in").toInt();
+                    int effectDuration = EffectsList::parameter(effect, "out").toInt() - EffectsList::parameter(effect, "in").toInt();
                     if (effectDuration > cropDuration().frames(m_fps)) {
                         effectDuration = cropDuration().frames(m_fps) / 2;
                     }
@@ -312,23 +312,23 @@ void ClipItem::initEffect(QDomElement effect, int diff, int offset)
             if (effect.attribute("id") == "fadein") {
                 if (m_effectList.hasEffect(QString(), "fade_from_black") == -1) {
                     int effectDuration = EffectsList::parameter(effect, "out").toInt();
-                   if (offset != 0) effectDuration -= offset - cropStart().frames(m_fps);
+                   if (offset != 0) effectDuration -= offset;
                     if (effectDuration > cropDuration().frames(m_fps)) {
                         effectDuration = cropDuration().frames(m_fps) / 2;
                     }
                     end += effectDuration;
                 } else
-                    end += EffectsList::parameter(m_effectList.getEffectByTag(QString(), "fade_from_black"), "out").toInt();
+                    end += EffectsList::parameter(m_effectList.getEffectByTag(QString(), "fade_from_black"), "out").toInt() - offset;
             } else if (effect.attribute("id") == "fade_from_black") {
                 if (m_effectList.hasEffect(QString(), "fadein") == -1) {
                     int effectDuration = EffectsList::parameter(effect, "out").toInt();
-                   if (offset != 0) effectDuration -= offset - cropStart().frames(m_fps);
+                   if (offset != 0) effectDuration -= offset;
                     if (effectDuration > cropDuration().frames(m_fps)) {
                         effectDuration = cropDuration().frames(m_fps) / 2;
                     }
                     end += effectDuration;
                 } else
-                    end += EffectsList::parameter(m_effectList.getEffectByTag(QString(), "fadein"), "out").toInt();
+                    end += EffectsList::parameter(m_effectList.getEffectByTag(QString(), "fadein"), "out").toInt() - offset;
             }
             EffectsList::setParameter(effect, "in", QString::number(start));
             EffectsList::setParameter(effect, "out", QString::number(end));
index 3200951807476da481a23e943e1524b697ecc671..98591ba89b136cfb8db4b6cc03144d6d7705c841 100644 (file)
@@ -388,6 +388,12 @@ void EffectStackView2::startDrag()
     }
     else if (m_draggedGroup) {
         doc = m_draggedGroup->effectsData();
+       if (m_effectMetaInfo.trackMode) {
+           doc.documentElement().setAttribute("clipstart", 0);
+       }
+       else {
+           doc.documentElement().setAttribute("clipstart", m_clipref->cropStart().frames(KdenliveSettings::project_fps()));
+       }
         pixmap = QPixmap::grabWidget(m_draggedGroup->title());
     }
     else return;