X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Ftransitionsettings.cpp;h=9ab4a9a7c5b5e381b4b03ed511ecdd785721c6ca;hb=32c8c40056e65b230f058b168e8e078ba066038b;hp=312cf60d73cf6d7d6d744dc463e48fdaeb201c7c;hpb=71e41ad0c197e2e2eb033dff7800427f64d3428f;p=kdenlive diff --git a/src/transitionsettings.cpp b/src/transitionsettings.cpp index 312cf60d..9ab4a9a7 100644 --- a/src/transitionsettings.cpp +++ b/src/transitionsettings.cpp @@ -66,7 +66,7 @@ TransitionSettings::TransitionSettings(Monitor *monitor, QWidget* parent) : connect(transitionList, SIGNAL(activated(int)), this, SLOT(slotTransitionChanged())); connect(transitionTrack, SIGNAL(activated(int)), this, SLOT(slotTransitionTrackChanged())); - connect(m_effectEdit, SIGNAL(parameterChanged(const QDomElement, const QDomElement, int)), this , SLOT(slotUpdateEffectParams(const QDomElement, const QDomElement))); + connect(m_effectEdit, SIGNAL(parameterChanged(QDomElement,QDomElement,int)), this , SLOT(slotUpdateEffectParams(QDomElement,QDomElement))); } void TransitionSettings::updateProjectFormat(MltVideoProfile profile, Timecode t, const QList info) @@ -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()); } @@ -195,6 +207,7 @@ void TransitionSettings::slotTransitionItemSelected(Transition* t, int nextTrack m_usedTransition = NULL; ItemInfo info; m_effectEdit->transferParamDesc(QDomElement(), info, false); + m_effectEdit->monitor()->slotShowEffectScene(false); } } @@ -233,7 +246,7 @@ void TransitionSettings::slotCheckMonitorPosition(int renderPos) { if (!isEnabled()) return; if (m_effectEdit->needsMonitorEffectScene()) { - if (renderPos >= m_usedTransition->startPos().frames(KdenliveSettings::project_fps()) && renderPos <= m_usedTransition->endPos().frames(KdenliveSettings::project_fps())) { + if (renderPos >= m_usedTransition->startPos().frames(KdenliveSettings::project_fps()) && renderPos < m_usedTransition->endPos().frames(KdenliveSettings::project_fps())) { if (!m_effectEdit->monitor()->effectSceneDisplayed()) { m_effectEdit->monitor()->slotShowEffectScene(true); } @@ -246,9 +259,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"