]> git.sesse.net Git - kdenlive/blobdiff - src/transitionsettings.cpp
Fix Coverity #980696
[kdenlive] / src / transitionsettings.cpp
index 312cf60d73cf6d7d6d744dc463e48fdaeb201c7c..dc8c0f4717c42728d057b620a804885763b04756 100644 (file)
@@ -122,9 +122,21 @@ void TransitionSettings::slotTransitionChanged(bool reinit, bool updateCurrent)
         m_effectEdit->transferParamDesc(e, m_usedTransition->info(), false);
     } else {
         // Same transition, we just want to update the parameters value
-        slotUpdateEffectParams(e, e);
-        if (m_usedTransition->hasGeometry())
-            m_effectEdit->transferParamDesc(m_usedTransition->toXML(), m_usedTransition->info(), false);
+        int ix = transitionList->findData(m_usedTransition->transitionInfo(), Qt::UserRole, Qt::MatchExactly);
+        if (ix != transitionList->currentIndex()) {
+           // Transition type changed, reload params
+           transitionList->blockSignals(true);
+           transitionList->setCurrentIndex(ix);
+           transitionList->blockSignals(false);
+           m_effectEdit->transferParamDesc(e, m_usedTransition->info(), false);
+       }
+       else {
+           slotUpdateEffectParams(e, e);
+           if (m_usedTransition->hasGeometry())
+               m_effectEdit->transferParamDesc(m_usedTransition->toXML(), m_usedTransition->info(), false);
+       }
+       if (m_effectEdit->needsMonitorEffectScene())
+           connect(m_effectEdit->monitor(), SIGNAL(renderPosition(int)), this, SLOT(slotRenderPos(int)));
     }
     slotCheckMonitorPosition(m_effectEdit->monitor()->render->seekFramePosition());
 }
@@ -153,7 +165,7 @@ void TransitionSettings::slotTransitionItemSelected(Transition* t, int nextTrack
     m_effectEdit->setFrameSize(p);
     m_autoTrackTransition = nextTrack;
     disconnect(m_effectEdit->monitor(), SIGNAL(renderPosition(int)), this, SLOT(slotRenderPos(int)));
-    if (t == m_usedTransition) {
+    if (t == m_usedTransition) {       
         if (t == NULL) return;
         if (update) {
             transitionTrack->blockSignals(true);
@@ -246,9 +258,9 @@ void TransitionSettings::slotCheckMonitorPosition(int renderPos)
     }
 }
 
-void TransitionSettings::setKeyframes(const QString data)
+void TransitionSettings::setKeyframes(const QString data, int maximum)
 {
-    m_effectEdit->setKeyframes(data);
+    m_effectEdit->setKeyframes(data, maximum);
 }
 
 #include "transitionsettings.moc"