]> git.sesse.net Git - kdenlive/blobdiff - src/editeffectcommand.cpp
Fix corruption when changing the project profile
[kdenlive] / src / editeffectcommand.cpp
index 8e3652369bdac4fcfd612e092e7413ad7043d03a..9bbebc748651bf0efb4652c8098db84ab33a8861 100644 (file)
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
  ***************************************************************************/
 
-#include <KLocale>
 
 #include "editeffectcommand.h"
+#include "customtrackview.h"
 
-EditEffectCommand::EditEffectCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement oldeffect, QDomElement effect, bool doIt)
-         : m_view(view), m_track(track), m_pos(pos), m_oldeffect(oldeffect), m_doIt(doIt) {
-           m_effect = effect.cloneNode().toElement();
-           setText(i18n("Edit effect"));
-        }
+#include <KLocale>
 
+EditEffectCommand::EditEffectCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement oldeffect, QDomElement effect, int stackPos, bool doIt, QUndoCommand *parent) :
+        QUndoCommand(parent),
+        m_view(view),
+        m_track(track),
+        m_oldeffect(oldeffect),
+        m_effect(effect),
+        m_pos(pos),
+        m_stackPos(stackPos),
+        m_doIt(doIt)
+{
+    QString effectName;
+    QDomNode namenode = effect.elementsByTagName("name").item(0);
+    if (!namenode.isNull()) effectName = i18n(namenode.toElement().text().toUtf8().data());
+    else effectName = i18n("effect");
+    setText(i18n("Edit effect %1", effectName));
+}
 
-// virtual 
+// virtual
+int EditEffectCommand::id() const
+{
+    return 1;
+}
+
+// virtual
+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_pos != static_cast<const EditEffectCommand*>(other)->m_pos) return false;
+    m_effect = static_cast<const EditEffectCommand*>(other)->m_effect.cloneNode().toElement();
+    return true;
+}
+
+// virtual
 void EditEffectCommand::undo()
 {
-kDebug()<<"----  undoing action";
-  m_view->updateEffect(m_track, m_pos, m_oldeffect);
+    m_view->updateEffect(m_track, m_pos, m_oldeffect, m_stackPos, false);
 }
-// virtual 
+// virtual
 void EditEffectCommand::redo()
 {
-kDebug()<<"----  redoing action";
-  m_view->updateEffect(m_track, m_pos, m_effect);
+    m_view->updateEffect(m_track, m_pos, m_effect, m_stackPos, m_doIt);
+    m_doIt = false;
 }
 
-#include "editeffectcommand.moc"
+