X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcommands%2Fmoveclipcommand.cpp;h=857eef048c8e499fa57a22f96b520959f60419ae;hb=29ceabd2afc227e0fb8b586c567eeaf7921b542e;hp=659c09faad669e31687fc9f1ad0a0f6dbeb88828;hpb=fd3954b6965b2bc81eeed9fadd40dbbf9607fa37;p=kdenlive diff --git a/src/commands/moveclipcommand.cpp b/src/commands/moveclipcommand.cpp index 659c09fa..857eef04 100644 --- a/src/commands/moveclipcommand.cpp +++ b/src/commands/moveclipcommand.cpp @@ -1,5 +1,6 @@ /*************************************************************************** * Copyright (C) 2007 by Jean-Baptiste Mardelle (jb@kdenlive.org) * + * 2012 Simon A. Eugster * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -21,36 +22,42 @@ #include "moveclipcommand.h" #include "customtrackview.h" -#include +#include -MoveClipCommand::MoveClipCommand(CustomTrackView *view, const ItemInfo start, const ItemInfo end, bool doIt, QUndoCommand * parent) : - QUndoCommand(parent), - m_view(view), - m_startPos(start), - m_endPos(end), - m_doIt(doIt) +MoveClipCommand::MoveClipCommand(CustomTrackView *view, const ItemInfo &start, const ItemInfo &end, bool doIt, QUndoCommand * parent) + : QUndoCommand(parent), + m_view(view), + m_startPos(start), + m_endPos(end), + m_doIt(doIt), + m_success(true) { setText(i18n("Move clip")); if (parent) { // command has a parent, so there are several operations ongoing, do not refresh monitor m_refresh = false; - } else m_refresh = true; + } else { + m_refresh = true; + } } -// virtual void MoveClipCommand::undo() { -// kDebug()<<"---- undoing action"; m_doIt = true; - m_view->moveClip(m_endPos, m_startPos, m_refresh); + // We can only undo what was done; + // if moveClip() failed in redo() the document does (or should) not change. + if (m_success) { + m_view->moveClip(m_endPos, m_startPos, m_refresh); + } } -// virtual void MoveClipCommand::redo() { - //kDebug() << "---- redoing action"; - if (m_doIt) - m_view->moveClip(m_startPos, m_endPos, m_refresh); + if (m_doIt) { + // qDebug() << "Executing move clip command. End now:" << m_endPos; + m_success = m_view->moveClip(m_startPos, m_endPos, m_refresh, &m_endPos); + // qDebug() << "Move clip command executed. End now: " << m_endPos; + } m_doIt = true; }