X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Ftransitionsettings.cpp;h=dc8c0f4717c42728d057b620a804885763b04756;hb=543774913976015441a00d28d8944406a95a0620;hp=2f3b9edad99ab5d0937b92c486d1b8364186b421;hpb=17a4a5bf6c8ab0cb1554a010a002a2e208d988c9;p=kdenlive diff --git a/src/transitionsettings.cpp b/src/transitionsettings.cpp index 2f3b9eda..dc8c0f47 100644 --- a/src/transitionsettings.cpp +++ b/src/transitionsettings.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - effecstackedit.h - description + effecstackedit.cpp - description ------------------- begin : Mar 15 2008 copyright : (C) 2008 by Marco Gittler @@ -110,18 +110,33 @@ void TransitionSettings::slotTransitionChanged(bool reinit, bool updateCurrent) QDomElement e = m_usedTransition->toXML().cloneNode().toElement(); if (reinit) { // Reset the transition parameters to the default one + disconnect(m_effectEdit->monitor(), SIGNAL(renderPosition(int)), this, SLOT(slotRenderPos(int))); QDomElement newTransition = MainWindow::transitions.getEffectByName(transitionList->currentText()).cloneNode().toElement(); slotUpdateEffectParams(e, newTransition); m_effectEdit->transferParamDesc(newTransition, m_usedTransition->info(), false); + if (m_effectEdit->needsMonitorEffectScene()) + connect(m_effectEdit->monitor(), SIGNAL(renderPosition(int)), this, SLOT(slotRenderPos(int))); } else if (!updateCurrent) { // Transition changed, update parameters dialog //slotUpdateEffectParams(e, e); 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()); } @@ -150,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); @@ -243,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"