From: Jean-Baptiste Mardelle Date: Thu, 23 Oct 2008 12:26:26 +0000 (+0000) Subject: Fix problem in effect stack that made keyframe effect go on top when editing paramete... X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=2866115de5ffce23d4f70aea4950f8cdc8cc39f3;p=kdenlive Fix problem in effect stack that made keyframe effect go on top when editing parameters, fix sorting of effect names in timeline clips, should solve: http://www.kdenlive.org/mantis/view.php?id=236 svn path=/branches/KDE4/; revision=2542 --- diff --git a/src/effectslist.cpp b/src/effectslist.cpp index 331bb75b..ffb5c41b 100644 --- a/src/effectslist.cpp +++ b/src/effectslist.cpp @@ -123,7 +123,6 @@ QStringList EffectsList::effectNames() { QDomNode namenode = effect.elementsByTagName("name").item(0); if (!namenode.isNull()) list.append(i18n(namenode.toElement().text().toUtf8().data())); } - qSort(list); return list; } diff --git a/src/renderer.cpp b/src/renderer.cpp index ac1c2e5d..ea763c05 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -1531,6 +1531,20 @@ bool Render::mltAddEffect(int track, GenTime position, QHash } Mlt::Service clipService(clip->get_service()); m_isBlocked = true; + + // temporarily remove all effects after insert point + QList filtersList; + const int filer_ix = QString(args.value("kdenlive_ix")).toInt(); + int ct = 0; + Mlt::Filter *filter = clipService.filter(ct); + while (filter) { + if (QString(filter->get("kdenlive_ix")).toInt() > filer_ix) { + filtersList.append(filter); + clipService.detach(*filter); + } else ct++; + filter = clipService.filter(ct); + } + // create filter QString tag = args.value("tag"); kDebug() << " / / INSERTING EFFECT: " << tag; @@ -1605,6 +1619,12 @@ bool Render::mltAddEffect(int track, GenTime position, QHash } delete[] filterId; delete[] filterTag; + + // re-add following filters + for (int i = 0; i < filtersList.count(); i++) { + clipService.attach(*(filtersList.at(i))); + } + m_isBlocked = false; if (doRefresh) refresh(); return true;