]> git.sesse.net Git - kdenlive/blobdiff - src/clipitem.cpp
Fix editing clip crop start and fade effects lost when resizing clip:
[kdenlive] / src / clipitem.cpp
index 7570202b77e49dd8f4692457e32add58dbd628bd..f672cd8af538ad020f0651ec9e06068f51c838e7 100644 (file)
@@ -1002,11 +1002,11 @@ OPERATIONTYPE ClipItem::operationMode(QPointF pos)
 
     if (qAbs((int)(pos.x() - (rect.x() + m_startFade))) < maximumOffset  && qAbs((int)(pos.y() - rect.y())) < 6) {
         return FADEIN;
-    } else if (pos.x() - rect.x() < maximumOffset && (rect.bottom() - pos.y() > addtransitionOffset)) {
+    } else if ((pos.x() <= rect.x() + rect.width() / 2) && pos.x() - rect.x() < maximumOffset && (rect.bottom() - pos.y() > addtransitionOffset)) {
         return RESIZESTART;
     } else if (qAbs((int)(pos.x() - (rect.x() + rect.width() - m_endFade))) < maximumOffset && qAbs((int)(pos.y() - rect.y())) < 6) {
         return FADEOUT;
-    } else if ((rect.right() - pos.x() < maximumOffset) && (rect.bottom() - pos.y() > addtransitionOffset)) {
+    } else if ((pos.x() >= rect.x() + rect.width() / 2) && (rect.right() - pos.x() < maximumOffset) && (rect.bottom() - pos.y() > addtransitionOffset)) {
         return RESIZEEND;
     } else if ((pos.x() - rect.x() < 16 / scale) && (rect.bottom() - pos.y() <= addtransitionOffset)) {
         return TRANSITIONSTART;
@@ -1856,9 +1856,9 @@ QMap<int, QDomElement> ClipItem::adjustEffectsToDuration(int width, int height,
             if (id == "fade_from_black" || id == "fadein") {
                 if (in != cropStart().frames(m_fps)) {
                     effects[i] = effect.cloneNode().toElement();
-                    int diff = in - cropStart().frames(m_fps);
-                    in -= diff;
-                    out -= diff;
+                    int duration = out - in;
+                    in = cropStart().frames(m_fps);
+                    out = in + duration;
                     EffectsList::setParameter(effect, "in", QString::number(in));
                     EffectsList::setParameter(effect, "out", QString::number(out));
                 }