]> git.sesse.net Git - kdenlive/blobdiff - src/clipitem.cpp
Fix template title clips & some other title issues
[kdenlive] / src / clipitem.cpp
index 0902037f39408b6a9b508bea4abd390017d44664..d16f1ad8b81fd730f22f05e40505050cc16f5013 100644 (file)
@@ -848,14 +848,13 @@ void ClipItem::paint(QPainter *painter,
 OPERATIONTYPE ClipItem::operationMode(QPointF pos)
 {
     if (isItemLocked()) return NONE;
-
+    const double scale = projectScene()->scale().x();
+    double maximumOffset = 6 / scale;
     if (isSelected() || (parentItem() && parentItem()->isSelected())) {
-        m_editedKeyframe = mouseOverKeyFrames(pos);
+        m_editedKeyframe = mouseOverKeyFrames(pos, maximumOffset);
         if (m_editedKeyframe != -1) return KEYFRAME;
     }
     QRectF rect = sceneBoundingRect();
-    const double scale = projectScene()->scale().x();
-    double maximumOffset = 6 / scale;
     int addtransitionOffset = 10;
     // Don't allow add transition if track height is very small
     if (rect.height() < 30) addtransitionOffset = 0;
@@ -1270,8 +1269,11 @@ void ClipItem::setEffectAt(int ix, QDomElement effect)
 EffectsParameterList ClipItem::addEffect(const QDomElement effect, bool animate)
 {
     bool needRepaint = false;
-    int ix = effect.attribute("kdenlive_ix").toInt();
-    if (ix <= m_effectList.count()) {
+    int ix;
+    if (!effect.hasAttribute("kdenlive_ix")) {
+        ix = effectsCounter();
+    } else ix = effect.attribute("kdenlive_ix").toInt();
+    if (!m_effectList.isEmpty() && ix <= m_effectList.count()) {
         needRepaint = true;
         m_effectList.insert(ix - 1, effect);
         for (int i = ix; i < m_effectList.count(); i++) {
@@ -1361,9 +1363,10 @@ EffectsParameterList ClipItem::addEffect(const QDomElement effect, bool animate)
     m_effectNames = m_effectList.effectNames().join(" / ");
     if (fade > 0) m_startFade = fade;
     else if (fade < 0) m_endFade = -fade;
+
     if (m_selectedEffect == -1) {
         setSelectedEffect(0);
-    }
+    } else if (m_selectedEffect == ix - 1) setSelectedEffect(m_selectedEffect);
     if (needRepaint) update(boundingRect());
     /*if (animate) {
         flashClip();
@@ -1450,6 +1453,7 @@ void ClipItem::deleteEffect(QString index)
         }
     }
     m_effectNames = m_effectList.effectNames().join(" / ");
+
     if (m_effectList.isEmpty() || m_selectedEffect + 1 == index.toInt()) {
         // Current effect was removed
         if (index.toInt() > m_effectList.count() - 1) {
@@ -1457,7 +1461,12 @@ void ClipItem::deleteEffect(QString index)
         } else setSelectedEffect(index.toInt());
     }
     if (needRepaint) update(boundingRect());
-    if (!m_effectList.isEmpty()) flashClip();
+    else {
+        QRectF r = boundingRect();
+        r.setHeight(20);
+        update(r);
+    }
+    //if (!m_effectList.isEmpty()) flashClip();
 }
 
 double ClipItem::speed() const