Message info
 
To:kde-commits@kde.org From:Jean-Baptiste Mardelle Subject:[kdenlive/effectstack] src: Fix undo / redo with effect groups Date:Fri, 30 Mar 2012 17:46:26 +0200 (CEST)
 

Git commit 9cdb513e71408861ab767e680d60590367aad301 by Jean-Baptiste Mardelle.
Committed on 30/03/2012 at 17:46.
Pushed by mardelle into branch 'effectstack'.

Fix undo / redo with effect groups

M +8 -5 src/commands/editeffectcommand.cpp
M +2 -1 src/commands/editeffectcommand.h
M +22 -21 src/customtrackview.cpp
M +2 -2 src/customtrackview.h
M +9 -6 src/effectslist.cpp
M +1 -1 src/effectslist.h
M +8 -1 src/effectstack/collapsiblegroup.cpp
M +2 -0 src/effectstack/collapsiblegroup.h
M +10 -10 src/effectstack/effectstackview2.cpp
M +1 -1 src/effectstack/effectstackview2.h
M +2 -2 src/mainwindow.cpp

http://commits.kde.org/kdenlive/9cdb513e71408861ab767e680d60590367aad301

diff --git a/src/commands/editeffectcommand.cpp b/src/commands/editeffectcommand.cpp
index b6a9814..73ca47f 100644
--- a/src/commands/editeffectcommand.cpp
+++ b/src/commands/editeffectcommand.cpp
@@ -23,7 +23,7 @@

#include <KLocale>

-EditEffectCommand::EditEffectCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement oldeffect, QDomElement effect, int stackPos, bool doIt, QUndoCommand *parent) :
+EditEffectCommand::EditEffectCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement oldeffect, QDomElement effect, int stackPos, bool refreshEffectStack, bool doIt, QUndoCommand *parent) :
QUndoCommand(parent),
m_view(view),
m_track(track),
@@ -31,7 +31,8 @@ EditEffectCommand::EditEffectCommand(CustomTrackView *view, const int track, Gen
m_effect(effect),
m_pos(pos),
m_stackPos(stackPos),
- m_doIt(doIt)
+ m_doIt(doIt),
+ m_refreshEffectStack(refreshEffectStack)
{
QString effectName;
QDomElement namenode = effect.firstChildElement("name");
@@ -51,6 +52,7 @@ bool EditEffectCommand::mergeWith(const QUndoCommand * other)
{
if (other->id() != id()) return false;
if (m_track != static_cast<const EditEffectCommand*>(other)->m_track) return false;
+ if (m_stackPos != static_cast<const EditEffectCommand*>(other)->m_stackPos) return false;
if (m_pos != static_cast<const EditEffectCommand*>(other)->m_pos) return false;
m_effect = static_cast<const EditEffectCommand*>(other)->m_effect.cloneNode().toElement();
return true;
@@ -59,13 +61,14 @@ bool EditEffectCommand::mergeWith(const QUndoCommand * other)
// virtual
void EditEffectCommand::undo()
{
- m_view->updateEffect(m_track, m_pos, m_oldeffect, m_stackPos, false);
+ m_view->updateEffect(m_track, m_pos, m_oldeffect, m_stackPos, true);
}
// virtual
void EditEffectCommand::redo()
{
- m_view->updateEffect(m_track, m_pos, m_effect, m_stackPos, m_doIt);
- m_doIt = false;
+ if (m_doIt) m_view->updateEffect(m_track, m_pos, m_effect, m_stackPos, m_refreshEffectStack);
+ m_doIt = true;
+ m_refreshEffectStack = true;
}


diff --git a/src/commands/editeffectcommand.h b/src/commands/editeffectcommand.h
index c793fd4..6129420 100644
--- a/src/commands/editeffectcommand.h
+++ b/src/commands/editeffectcommand.h
@@ -31,7 +31,7 @@ class CustomTrackView;
class EditEffectCommand : public QUndoCommand
{
public:
- EditEffectCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement oldeffect, QDomElement effect, int stackPos, bool doIt, QUndoCommand *parent = 0);
+ EditEffectCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement oldeffect, QDomElement effect, int stackPos, bool refreshEffectStack, bool doIt, QUndoCommand *parent = 0);

virtual int id() const;
virtual bool mergeWith(const QUndoCommand * command);
@@ -46,6 +46,7 @@ private:
const GenTime m_pos;
int m_stackPos;
bool m_doIt;
+ bool m_refreshEffectStack;
};

#endif
diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp
index 3cd0003..b292a1f 100644
--- a/src/customtrackview.cpp
+++ b/src/customtrackview.cpp
@@ -1287,7 +1287,7 @@ void CustomTrackView::mouseDoubleClickEvent(QMouseEvent *event)
//item->updateKeyframeEffect();
//QString next = item->keyframes(item->selectedEffectIndex());
QDomElement newEffect = item->selectedEffect().cloneNode().toElement();
- EditEffectCommand *command = new EditEffectCommand(this, m_document->tracksCount() - item->track(), item->startPos(), oldEffect, newEffect, item->selectedEffectIndex(), false);
+ EditEffectCommand *command = new EditEffectCommand(this, m_document->tracksCount() - item->track(), item->startPos(), oldEffect, newEffect, item->selectedEffectIndex(), false, false);
//EditKeyFrameCommand *command = new EditKeyFrameCommand(this, m_dragItem->track(), m_dragItem->startPos(), item->selectedEffectIndex(), previous, next, false);
m_commandStack->push(command);
updateEffect(m_document->tracksCount() - item->track(), item->startPos(), item->selectedEffect(), item->selectedEffectIndex());
@@ -1904,7 +1904,7 @@ void CustomTrackView::slotDeleteEffect(ClipItem *clip, int track, QDomElement ef
setDocumentModified();
}

-void CustomTrackView::updateEffect(int track, GenTime pos, QDomElement insertedEffect, int ix, bool triggeredByUser)
+void CustomTrackView::updateEffect(int track, GenTime pos, QDomElement insertedEffect, int ix, bool updateEffectStack)
{
if (insertedEffect.isNull()) {
emit displayMessage(i18n("Problem editing effect"), ErrorMessage);
@@ -1942,11 +1942,12 @@ void CustomTrackView::updateEffect(int track, GenTime pos, QDomElement insertedE
doChangeClipSpeed(clip->info(), clip->speedIndependantInfo(), speed, clip->speed(), strobe, clip->baseClip()->getId());
}
if (clip->updateEffect(effect)) {
- if (ix == clip->selectedEffectIndex()) {
- clip->setSelectedEffect(ix);
- if (!triggeredByUser)
+ if (updateEffectStack && clip->isSelected())
emit clipItemSelected(clip, ix);
- }
+ /*if (ix == clip->selectedEffectIndex()) {
+ clip->setSelectedEffect(ix);
+
+ }*/
} else emit displayMessage(i18n("Problem editing effect"), ErrorMessage);
return;
}
@@ -1969,15 +1970,15 @@ void CustomTrackView::updateEffect(int track, GenTime pos, QDomElement insertedE
clip->setFadeOut(pos);
}
}
- bool success = true;
- if (!m_document->renderer()->mltEditEffect(m_document->tracksCount() - clip->track(), clip->startPos(), effectParams)) success = false;
+ bool success = m_document->renderer()->mltEditEffect(m_document->tracksCount() - clip->track(), clip->startPos(), effectParams);

if (success && clip->updateEffect(effect)) {
- if (ix == clip->selectedEffectIndex()) {
- clip->setSelectedEffect(ix);
- if (!triggeredByUser)
- emit clipItemSelected(clip, ix);
+ if (updateEffectStack && clip->isSelected()) {
+ emit clipItemSelected(clip, ix);
}
+ /*if (ix == clip->selectedEffectIndex()) {
+ clip->setSelectedEffect(ix);
+ }*/
}
else emit displayMessage(i18n("Problem editing effect"), ErrorMessage);
}
@@ -2038,9 +2039,9 @@ void CustomTrackView::slotChangeEffectState(ClipItem *clip, int track, int effec

if (clip == NULL) {
// editing track effect
- command = new EditEffectCommand(this, m_document->tracksCount() - track, GenTime(-1), oldEffect, effect, effectPos, true);
+ command = new EditEffectCommand(this, m_document->tracksCount() - track, GenTime(-1), oldEffect, effect, effectPos, true, true);
} else {
- command = new EditEffectCommand(this, m_document->tracksCount() - clip->track(), clip->startPos(), oldEffect, effect, effectPos, true);
+ command = new EditEffectCommand(this, m_document->tracksCount() - clip->track(), clip->startPos(), oldEffect, effect, effectPos, true, true);
}
m_commandStack->push(command);
setDocumentModified();;
@@ -2057,11 +2058,11 @@ void CustomTrackView::slotChangeEffectPosition(ClipItem *clip, int track, int cu
setDocumentModified();
}

-void CustomTrackView::slotUpdateClipEffect(ClipItem *clip, int track, QDomElement oldeffect, QDomElement effect, int ix)
+void CustomTrackView::slotUpdateClipEffect(ClipItem *clip, int track, QDomElement oldeffect, QDomElement effect, int ix, bool refreshEffectStack)
{
EditEffectCommand *command;
- if (clip) command = new EditEffectCommand(this, m_document->tracksCount() - clip->track(), clip->startPos(), oldeffect, effect, ix, true);
- else command = new EditEffectCommand(this, m_document->tracksCount() - track, GenTime(-1), oldeffect, effect, ix, true);
+ if (clip) command = new EditEffectCommand(this, m_document->tracksCount() - clip->track(), clip->startPos(), oldeffect, effect, ix, refreshEffectStack, true);
+ else command = new EditEffectCommand(this, m_document->tracksCount() - track, GenTime(-1), oldeffect, effect, ix, refreshEffectStack, true);
m_commandStack->push(command);
}

@@ -2070,7 +2071,7 @@ void CustomTrackView::slotUpdateClipRegion(ClipItem *clip, int ix, QString regio
QDomElement effect = clip->getEffectAt(ix);
QDomElement oldeffect = effect.cloneNode().toElement();
effect.setAttribute("region", region);
- EditEffectCommand *command = new EditEffectCommand(this, m_document->tracksCount() - clip->track(), clip->startPos(), oldeffect, effect, ix, true);
+ EditEffectCommand *command = new EditEffectCommand(this, m_document->tracksCount() - clip->track(), clip->startPos(), oldeffect, effect, ix, true, true);
m_commandStack->push(command);
}

@@ -3769,7 +3770,7 @@ void CustomTrackView::mouseReleaseEvent(QMouseEvent * event)
//item->updateKeyframeEffect();
//QString next = item->keyframes(item->selectedEffectIndex());
//EditKeyFrameCommand *command = new EditKeyFrameCommand(this, item->track(), item->startPos(), item->selectedEffectIndex(), previous, next, false);
- EditEffectCommand *command = new EditEffectCommand(this, m_document->tracksCount() - item->track(), item->startPos(), oldEffect, newEffect, item->selectedEffectIndex(), false);
+ EditEffectCommand *command = new EditEffectCommand(this, m_document->tracksCount() - item->track(), item->startPos(), oldEffect, newEffect, item->selectedEffectIndex(), false, false);

m_commandStack->push(command);
updateEffect(m_document->tracksCount() - item->track(), item->startPos(), item->selectedEffect(), item->selectedEffectIndex());
@@ -6830,7 +6831,7 @@ void CustomTrackView::adjustEffects(ClipItem* item, ItemInfo oldInfo, QUndoComma
if (effects.count()) {
QMap<int, QDomElement>::const_iterator i = effects.constBegin();
while (i != effects.constEnd()) {
- new EditEffectCommand(this, m_document->tracksCount() - item->track(), item->startPos(), i.value(), item->effectAt(i.key()), i.key(), false, command);
+ new EditEffectCommand(this, m_document->tracksCount() - item->track(), item->startPos(), i.value(), item->effectAt(i.key()), i.key(), false, false, command);
++i;
}
}
@@ -6854,7 +6855,7 @@ void CustomTrackView::slotGotFilterJobResults(const QString &/*id*/, int startPo
kDebug()<<"// RESULT FILTER: "<<i.key()<<"="<< i.value();
++i;
}
- EditEffectCommand *command = new EditEffectCommand(this, m_document->tracksCount() - clip->track(), clip->startPos(), effect, newEffect, clip->selectedEffectIndex(), true);
+ EditEffectCommand *command = new EditEffectCommand(this, m_document->tracksCount() - clip->track(), clip->startPos(), effect, newEffect, clip->selectedEffectIndex(), true, true);
m_commandStack->push(command);
emit clipItemSelected(clip, clip->selectedEffectIndex());
}
diff --git a/src/customtrackview.h b/src/customtrackview.h
index 6a66ae6..76b5cfe 100644
--- a/src/customtrackview.h
+++ b/src/customtrackview.h
@@ -76,7 +76,7 @@ public:
void slotAddGroupEffect(QDomElement effect, AbstractGroupItem *group);
void addEffect(int track, GenTime pos, QDomElement effect);
void deleteEffect(int track, GenTime pos, QDomElement effect);
- void updateEffect(int track, GenTime pos, QDomElement insertedEffect, int ix, bool triggeredByUser = true);
+ void updateEffect(int track, GenTime pos, QDomElement insertedEffect, int ix, bool refreshEffectStack = false);
void moveEffect(int track, GenTime pos, int oldPos, int newPos);
void addTransition(ItemInfo transitionInfo, int endTrack, QDomElement params, bool refresh);
void deleteTransition(ItemInfo transitionInfo, int endTrack, QDomElement params, bool refresh);
@@ -194,7 +194,7 @@ public slots:
void slotDeleteEffect(ClipItem *clip, int track, QDomElement effect, bool affectGroup = true);
void slotChangeEffectState(ClipItem *clip, int track, int effectPos, bool disable);
void slotChangeEffectPosition(ClipItem *clip, int track, int currentPos, int newPos);
- void slotUpdateClipEffect(ClipItem *clip, int track, QDomElement oldeffect, QDomElement effect, int ix);
+ void slotUpdateClipEffect(ClipItem *clip, int track, QDomElement oldeffect, QDomElement effect, int ix, bool refreshEffectStack = true);
void slotUpdateClipRegion(ClipItem *clip, int ix, QString region);
void slotRefreshEffects(ClipItem *clip);
void setDuration(int duration);
diff --git a/src/effectslist.cpp b/src/effectslist.cpp
index 68706ab..f673c0e 100644
--- a/src/effectslist.cpp
+++ b/src/effectslist.cpp
@@ -303,7 +303,7 @@ QDomElement EffectsList::append(QDomElement e)
if (!e.isNull()) {
result = m_baseElement.appendChild(importNode(e, true)).toElement();
if (m_useIndex) {
- updateIndexes(m_baseElement.childNodes());
+ updateIndexes(m_baseElement.childNodes(), m_baseElement.childNodes().count() - 1);
}
}
return result;
@@ -331,7 +331,7 @@ void EffectsList::removeAt(int ix)
QDomNodeList effects = m_baseElement.childNodes();
if (ix <= 0 || ix > effects.count()) return;
m_baseElement.removeChild(effects.at(ix - 1));
- if (m_useIndex) updateIndexes(effects);
+ if (m_useIndex) updateIndexes(effects, ix - 1);
}

QDomElement EffectsList::itemFromIndex(int ix) const
@@ -346,18 +346,21 @@ QDomElement EffectsList::insert(QDomElement effect)
QDomNodeList effects = m_baseElement.childNodes();
int ix = effect.attribute("kdenlive_ix").toInt();
QDomElement result;
- if (effect.hasAttribute("kdenlive_ix") && ix > effects.count()) result = m_baseElement.appendChild(importNode(effect, true)).toElement();
+ if (effect.hasAttribute("kdenlive_ix") && ix > effects.count()) {
+ ix = effects.count();
+ result = m_baseElement.appendChild(importNode(effect, true)).toElement();
+ }
else {
QDomElement listeffect = effects.at(ix - 1).toElement();
result = m_baseElement.insertBefore(importNode(effect, true), listeffect).toElement();
}
- if (m_useIndex) updateIndexes(effects);
+ if (m_useIndex) updateIndexes(effects, ix - 1);
return result;
}

-void EffectsList::updateIndexes(QDomNodeList effects)
+void EffectsList::updateIndexes(QDomNodeList effects, int startIndex)
{
- for (int i = 0; i < effects.count(); i++) {
+ for (int i = startIndex; i < effects.count(); i++) {
QDomElement listeffect = effects.at(i).toElement();
listeffect.setAttribute("kdenlive_ix", i + 1);
}
diff --git a/src/effectslist.h b/src/effectslist.h
index e338b2b..e52bb01 100644
--- a/src/effectslist.h
+++ b/src/effectslist.h
@@ -87,7 +87,7 @@ public:
/** @brief Get am effect with effect index equal to ix. */
QDomElement effectFromIndex(QDomNodeList effects, int ix);
/** @brief Update all effects indexes to make sure they are 1, 2, 3, ... */
- void updateIndexes(QDomNodeList effects);
+ void updateIndexes(QDomNodeList effects, int startIndex);

private:
QDomElement m_baseElement;
diff --git a/src/effectstack/collapsiblegroup.cpp b/src/effectstack/collapsiblegroup.cpp
index ac0ab4e..7e0773b 100644
--- a/src/effectstack/collapsiblegroup.cpp
+++ b/src/effectstack/collapsiblegroup.cpp
@@ -26,7 +26,7 @@
#include <QInputDialog>
#include <QDragEnterEvent>
#include <QDropEvent>
-
+#include <QMutexLocker>

#include <KDebug>
#include <KGlobalSettings>
@@ -218,6 +218,7 @@ QWidget *CollapsibleGroup::title() const

void CollapsibleGroup::addGroupEffect(CollapsibleEffect *effect)
{
+ QMutexLocker lock(&m_mutex);
QVBoxLayout *vbox = static_cast<QVBoxLayout *>(widgetFrame->layout());
if (vbox == NULL) {
vbox = new QVBoxLayout();
@@ -238,12 +239,14 @@ QString CollapsibleGroup::infoString() const

void CollapsibleGroup::removeGroup(int ix, QVBoxLayout *layout)
{
+ QMutexLocker lock(&m_mutex);
QVBoxLayout *vbox = static_cast<QVBoxLayout *>(widgetFrame->layout());
if (vbox == NULL) return;
for (int i = m_subWidgets.count() - 1; i >= 0 ; i--) {
vbox->removeWidget(m_subWidgets.at(i));
layout->insertWidget(ix, m_subWidgets.at(i));
m_subWidgets.at(i)->removeFromGroup();
+ kDebug()<<"// Removing effect at: "<<i;
}
m_subWidgets.clear();
}
@@ -285,6 +288,7 @@ void CollapsibleGroup::dragLeaveEvent(QDragLeaveEvent */*event*/)

void CollapsibleGroup::dropEvent(QDropEvent *event)
{
+ QMutexLocker lock(&m_mutex);
framegroup->setProperty("active", false);
framegroup->setStyleSheet(framegroup->styleSheet());
const QString effects = QString::fromUtf8(event->mimeData()->data("kdenlive/effectslist"));
@@ -310,6 +314,7 @@ void CollapsibleGroup::dropEvent(QDropEvent *event)

void CollapsibleGroup::slotRenameGroup()
{
+ QMutexLocker lock(&m_mutex);
m_title->setReadOnly(true);
if (m_title->text().isEmpty()) m_title->setText(i18n("Effect Group"));
for (int j = 0; j < m_subWidgets.count(); j++) {
@@ -320,11 +325,13 @@ void CollapsibleGroup::slotRenameGroup()

QList <CollapsibleEffect*> CollapsibleGroup::effects()
{
+ QMutexLocker lock(&m_mutex);
return m_subWidgets;
}

QDomDocument CollapsibleGroup::effectsData()
{
+ QMutexLocker lock(&m_mutex);
QDomDocument doc;
QDomElement list = doc.createElement("list");
list.setAttribute("name", m_title->text());
diff --git a/src/effectstack/collapsiblegroup.h b/src/effectstack/collapsiblegroup.h
index 79e7a5c..bf33330 100644
--- a/src/effectstack/collapsiblegroup.h
+++ b/src/effectstack/collapsiblegroup.h
@@ -32,6 +32,7 @@
#include <QDomElement>
#include <QToolButton>
#include <QLineEdit>
+#include <QMutex>

class QFrame;

@@ -95,6 +96,7 @@ private:
EffectInfo m_info;
int m_index;
MyEditableLabel *m_title;
+ QMutex m_mutex;

protected:
virtual void mouseDoubleClickEvent ( QMouseEvent * event );
diff --git a/src/effectstack/effectstackview2.cpp b/src/effectstack/effectstackview2.cpp
index f3b8479..e8f0386 100644
--- a/src/effectstack/effectstackview2.cpp
+++ b/src/effectstack/effectstackview2.cpp
@@ -488,9 +488,9 @@ CollapsibleEffect *EffectStackView2::getEffectByIndex(int ix)
void EffectStackView2::slotUpdateEffectParams(const QDomElement old, const QDomElement e, int ix)
{
if (m_effectMetaInfo.trackMode)
- emit updateEffect(NULL, m_trackindex, old, e, ix);
+ emit updateEffect(NULL, m_trackindex, old, e, ix,false);
else if (m_clipref) {
- emit updateEffect(m_clipref, -1, old, e, ix);
+ emit updateEffect(m_clipref, -1, old, e, ix, false);
// Make sure the changed effect is currently displayed
slotSetCurrentEffect(ix);
}
@@ -571,12 +571,12 @@ void EffectStackView2::slotResetEffect(int ix)
info.startPos = GenTime(-1);
info.track = 0;
m_effects.at(ix)->updateWidget(info, dom, &m_effectMetaInfo);
- emit updateEffect(NULL, m_trackindex, old, dom, ix);
+ emit updateEffect(NULL, m_trackindex, old, dom, ix,false);
} else {
m_clipref->initEffect(dom);
m_effects.at(ix)->updateWidget(m_clipref->info(), dom, &m_effectMetaInfo);
//m_ui.region_url->setUrl(KUrl(dom.attribute("region")));
- emit updateEffect(m_clipref, -1, old, dom, ix);
+ emit updateEffect(m_clipref, -1, old, dom, ix,false);
}
}

@@ -606,9 +606,9 @@ void EffectStackView2::slotCreateGroup(int ix)
info.cropStart = GenTime(0);
info.startPos = GenTime(-1);
info.track = 0;
- emit updateEffect(NULL, m_trackindex, oldeffect, neweffect, ix);
+ emit updateEffect(NULL, m_trackindex, oldeffect, neweffect, ix, false);
} else {
- emit updateEffect(m_clipref, -1, oldeffect, neweffect, ix);
+ emit updateEffect(m_clipref, -1, oldeffect, neweffect, ix, false);
}

QVBoxLayout *l = static_cast<QVBoxLayout *>(m_ui.container->widget()->layout());
@@ -654,9 +654,9 @@ void EffectStackView2::slotMoveEffect(int currentIndex, int newIndex, int groupI
info.cropStart = GenTime(0);
info.startPos = GenTime(-1);
info.track = 0;
- emit updateEffect(NULL, m_trackindex, oldeffect, neweffect, effectToMove->effectIndex());
+ emit updateEffect(NULL, m_trackindex, oldeffect, neweffect, effectToMove->effectIndex(),false);
} else {
- emit updateEffect(m_clipref, -1, oldeffect, neweffect, effectToMove->effectIndex());
+ emit updateEffect(m_clipref, -1, oldeffect, neweffect, effectToMove->effectIndex(),false);
}

//if (currentIndex == newIndex) return;
@@ -685,9 +685,9 @@ void EffectStackView2::slotRenameGroup(CollapsibleGroup *group)
QDomElement changed = origin.cloneNode().toElement();
changed.setAttribute("kdenlive_info", effects.at(i)->infoString());
if (m_effectMetaInfo.trackMode) {
- emit updateEffect(NULL, m_trackindex, origin, changed, effects.at(i)->effectIndex());
+ emit updateEffect(NULL, m_trackindex, origin, changed, effects.at(i)->effectIndex(),false);
} else {
- emit updateEffect(m_clipref, -1, origin, changed, effects.at(i)->effectIndex());
+ emit updateEffect(m_clipref, -1, origin, changed, effects.at(i)->effectIndex(),false);
}
}
}
diff --git a/src/effectstack/effectstackview2.h b/src/effectstack/effectstackview2.h
index ffcebec..cf7df7b 100644
--- a/src/effectstack/effectstackview2.h
+++ b/src/effectstack/effectstackview2.h
@@ -184,7 +184,7 @@ private slots:
signals:
void removeEffect(ClipItem*, int, QDomElement);
/** Parameters for an effect changed, update the filter in playlist */
- void updateEffect(ClipItem*, int, QDomElement, QDomElement, int);
+ void updateEffect(ClipItem*, int, QDomElement, QDomElement, int,bool);
/** An effect in stack was moved, we need to regenerate
all effects for this clip in the playlist */
void refreshEffectStack(ClipItem *);
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 7d55391..1df1226 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -2470,7 +2470,7 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) //cha
disconnect(m_activeTimeline, SIGNAL(cursorMoved()), m_projectMonitor, SLOT(slotActivateMonitor()));
disconnect(m_activeTimeline, SIGNAL(configTrack(int)), this, SLOT(slotConfigTrack(int)));
disconnect(m_activeDocument, SIGNAL(docModified(bool)), this, SLOT(slotUpdateDocumentState(bool)));
- disconnect(m_effectStack, SIGNAL(updateEffect(ClipItem*, int, QDomElement, QDomElement, int)), m_activeTimeline->projectView(), SLOT(slotUpdateClipEffect(ClipItem*, int, QDomElement, QDomElement, int)));
+ disconnect(m_effectStack, SIGNAL(updateEffect(ClipItem*, int, QDomElement, QDomElement, int,bool)), m_activeTimeline->projectView(), SLOT(slotUpdateClipEffect(ClipItem*, int, QDomElement, QDomElement, int,bool)));
disconnect(m_effectStack, SIGNAL(removeEffect(ClipItem*, int, QDomElement)), m_activeTimeline->projectView(), SLOT(slotDeleteEffect(ClipItem*, int, QDomElement)));
disconnect(m_effectStack, SIGNAL(addEffect(ClipItem*, QDomElement)), trackView->projectView(), SLOT(slotAddEffect(ClipItem*, QDomElement)));
disconnect(m_effectStack, SIGNAL(changeEffectState(ClipItem*, int, int, bool)), m_activeTimeline->projectView(), SLOT(slotChangeEffectState(ClipItem*, int, int, bool)));
@@ -2547,7 +2547,7 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) //cha

connect(m_projectList, SIGNAL(gotFilterJobResults(const QString &, int, int, const QString &, stringMap)), trackView->projectView(), SLOT(slotGotFilterJobResults(const QString &, int, int, const QString &, stringMap)));

- connect(m_effectStack, SIGNAL(updateEffect(ClipItem*, int, QDomElement, QDomElement, int)), trackView->projectView(), SLOT(slotUpdateClipEffect(ClipItem*, int, QDomElement, QDomElement, int)));
+ connect(m_effectStack, SIGNAL(updateEffect(ClipItem*, int, QDomElement, QDomElement, int,bool)), trackView->projectView(), SLOT(slotUpdateClipEffect(ClipItem*, int, QDomElement, QDomElement, int,bool)));
connect(m_effectStack, SIGNAL(updateClipRegion(ClipItem*, int, QString)), trackView->projectView(), SLOT(slotUpdateClipRegion(ClipItem*, int, QString)));
connect(m_effectStack, SIGNAL(removeEffect(ClipItem*, int, QDomElement)), trackView->projectView(), SLOT(slotDeleteEffect(ClipItem*, int, QDomElement)));
connect(m_effectStack, SIGNAL(addEffect(ClipItem*, QDomElement)), trackView->projectView(), SLOT(slotAddEffect(ClipItem*, QDomElement)));