]> git.sesse.net Git - kdenlive/blobdiff - src/insertspacecommand.cpp
Rewrite the spacer command, should hopefully solve:
[kdenlive] / src / insertspacecommand.cpp
index a114950268934f3d1cfc2b19bd223615d58d886d..404e9748f41c175cb55a581d9e783ca6d96784be 100644 (file)
 #include "insertspacecommand.h"
 #include "customtrackview.h"
 
-InsertSpaceCommand::InsertSpaceCommand(CustomTrackView *view, const GenTime &pos, int track, const GenTime &duration, bool doIt, QUndoCommand * parent) : QUndoCommand(parent), m_view(view), m_pos(pos), m_track(track), m_duration(duration), m_doIt(doIt) {
+InsertSpaceCommand::InsertSpaceCommand(CustomTrackView *view, QList<ItemInfo> clipsToMove, QList<ItemInfo> transToMove, int track, const GenTime &duration, bool doIt, QUndoCommand * parent)
+        : QUndoCommand(parent), m_view(view), m_clipsToMove(clipsToMove), m_transToMove(transToMove), m_track(track), m_duration(duration), m_doIt(doIt) {
     setText(i18n("Insert space"));
 }
 
 // virtual
 void InsertSpaceCommand::undo() {
     // kDebug()<<"----  undoing action";
-    m_view->insertSpace(m_pos + m_duration, m_track, GenTime() - m_duration);
+    if (m_duration > GenTime()) m_view->insertSpace(m_clipsToMove, m_transToMove, m_track, GenTime() - m_duration, m_duration);
+    else m_view->insertSpace(m_clipsToMove, m_transToMove, m_track, GenTime() - m_duration, m_duration);
 }
 // virtual
 void InsertSpaceCommand::redo() {
     // kDebug() << "----  redoing action cut: " << m_cutTime.frames(25);
-    if (m_doIt)
-        m_view->insertSpace(m_pos, m_track, m_duration);
+    if (m_doIt) {
+        if (m_duration < GenTime()) m_view->insertSpace(m_clipsToMove, m_transToMove, m_track, m_duration, GenTime());
+        else m_view->insertSpace(m_clipsToMove, m_transToMove, m_track, m_duration, GenTime());
+    }
     m_doIt = true;
 }