Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions core_lib/src/interface/undoredocommand.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ GNU General Public License for more details.

#include "layermanager.h"
#include "selectionmanager.h"
#include "undoredomanager.h"

#include "layersound.h"
#include "layerbitmap.h"
Expand All @@ -35,6 +36,11 @@ UndoRedoCommand::UndoRedoCommand(Editor* editor, QUndoCommand* parent) : QUndoCo
mEditor = editor;
}

bool UndoRedoCommand::isFirstRedo() const
{
return mEditor->undoRedo()->isFirstRedoInProgress();
}

KeyFrameRemoveCommand::KeyFrameRemoveCommand(const KeyFrame* undoKeyFrame,
int undoLayerId,
const QString &description,
Expand Down Expand Up @@ -84,7 +90,8 @@ void KeyFrameRemoveCommand::redo()

UndoRedoCommand::redo();

if (isFirstRedo()) { setFirstRedo(false); return; }
// Ignore automatic redo when added to undo stack
if (isFirstRedo()) { return; }

layer->removeKeyFrame(redoPosition);

Expand Down Expand Up @@ -136,7 +143,7 @@ void KeyFrameAddCommand::redo()
UndoRedoCommand::redo();

// Ignore automatic redo when added to undo stack
if (isFirstRedo()) { setFirstRedo(false); return; }
if (isFirstRedo()) { return; }

layer->addNewKeyFrameAt(redoPosition);

Expand Down Expand Up @@ -192,7 +199,7 @@ void MoveKeyFramesCommand::redo()
UndoRedoCommand::redo();

// Ignore automatic redo when added to undo stack
if (isFirstRedo()) { setFirstRedo(false); return; }
if (isFirstRedo()) { return; }

QList<int> newPositions = positions;

Expand Down Expand Up @@ -247,7 +254,7 @@ void BitmapReplaceCommand::redo()
UndoRedoCommand::redo();

// Ignore automatic redo when added to undo stack
if (isFirstRedo()) { setFirstRedo(false); return; }
if (isFirstRedo()) { return; }

static_cast<LayerBitmap*>(layer)->replaceKeyFrame(&redoBitmap);

Expand Down Expand Up @@ -295,7 +302,7 @@ void VectorReplaceCommand::redo()
UndoRedoCommand::redo();

// Ignore automatic redo when added to undo stack
if (isFirstRedo()) { setFirstRedo(false); return; }
if (isFirstRedo()) { return; }

static_cast<LayerVector*>(layer)->replaceKeyFrame(&redoVector);

Expand Down Expand Up @@ -350,7 +357,7 @@ void TransformCommand::redo()
UndoRedoCommand::redo();

// Ignore automatic redo when added to undo stack
if (isFirstRedo()) { setFirstRedo(false); return; }
if (isFirstRedo()) { return; }

apply(redoSelectionRect,
redoTranslation,
Expand Down
4 changes: 1 addition & 3 deletions core_lib/src/interface/undoredocommand.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,10 @@ class UndoRedoCommand : public QUndoCommand
protected:
Editor* editor() const { return mEditor; }

bool isFirstRedo() const { return mIsFirstRedo; }
void setFirstRedo(const bool state) { mIsFirstRedo = state; }
bool isFirstRedo() const;

private:
Editor* mEditor = nullptr;
bool mIsFirstRedo = true;
};

class KeyFrameRemoveCommand : public UndoRedoCommand
Expand Down
2 changes: 2 additions & 0 deletions core_lib/src/managers/undoredomanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,9 @@ bool UndoRedoManager::hasUnsavedChanges() const

void UndoRedoManager::pushCommand(QUndoCommand* command)
{
mFirstUndoInProgress = true;
mUndoStack.push(command);
mFirstUndoInProgress = false;

emit didUpdateUndoStack();
}
Expand Down
2 changes: 2 additions & 0 deletions core_lib/src/managers/undoredomanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ class UndoRedoManager : public BaseManager
/** Checks whether there are unsaved changes.
* @return true if there are unsaved changes, otherwise false */
bool hasUnsavedChanges() const;
bool isFirstRedoInProgress() const { return mFirstUndoInProgress; }

/** Prepares and returns an save state with common data
* @return A UndoSaveState struct with common keyframe data */
Expand Down Expand Up @@ -220,6 +221,7 @@ class UndoRedoManager : public BaseManager
SAVESTATE_ID mSaveStateId = 1;

bool mNewBackupSystemEnabled = false;
bool mFirstUndoInProgress = false;
};

#endif // UNDOREDOMANAGER_H
Loading