]> git.sesse.net Git - kdenlive/blobdiff - src/addtimelineclipcommand.cpp
Fix undo/redo delete clip
[kdenlive] / src / addtimelineclipcommand.cpp
index 079dcdfb326e3b94cebc4f116e00cfa48fe37550..3d3f66a972229638414b8b2ceff1869b0f75b033 100644 (file)
 
 #include "addtimelineclipcommand.h"
 
-AddTimelineClipCommand::AddTimelineClipCommand(CustomTrackView *view, QDomElement xml, int clipId, int track, int startpos, QRectF rect, int duration, bool doIt)
-         : m_view(view), m_xml(xml), m_clipId(clipId), m_clipTrack(track), m_clipPos(startpos), m_clipRect(rect), m_clipDuration(duration), m_doIt(doIt) {
-           setText(i18n("Add timeline clip"));
+AddTimelineClipCommand::AddTimelineClipCommand(CustomTrackView *view, QDomElement xml, int clipId, int track, int startpos, QRectF rect, int duration, bool doIt, bool doRemove)
+         : m_view(view), m_xml(xml), m_clipId(clipId), m_clipTrack(track), m_clipPos(startpos), m_clipRect(rect), m_clipDuration(duration), m_doIt(doIt), m_remove(doRemove) {
+           if (!m_remove) setText(i18n("Add timeline clip"));
+           else setText(i18n("Delete timeline clip"));
         }
 
 
 // virtual 
 void AddTimelineClipCommand::undo()
 {
-// kDebug()<<"----  undoing action";
-  m_doIt = true;
-  if (m_doIt) m_view->deleteClip(m_clipTrack, m_clipPos, m_clipRect);
+  if (!m_remove) m_view->deleteClip(m_clipTrack, m_clipPos, m_clipRect);
+  else m_view->addClip(m_xml, m_clipId, m_clipTrack, m_clipPos, m_clipRect, m_clipDuration);
 }
 // virtual 
 void AddTimelineClipCommand::redo()
 {
-  //kDebug()<<"----  redoing action";
-  if (m_doIt) m_view->addClip(m_xml, m_clipId, m_clipTrack, m_clipPos, m_clipRect, m_clipDuration);
+  if (m_doIt) {
+    if (!m_remove) m_view->addClip(m_xml, m_clipId, m_clipTrack, m_clipPos, m_clipRect, m_clipDuration);
+    else m_view->deleteClip(m_clipTrack, m_clipPos, m_clipRect);
+  }
   m_doIt = true;
 }