Added history management for duplicating layers

This commit is contained in:
unsettledgames 2020-09-17 12:36:15 +02:00
parent 96d428af90
commit 2a5315b81a
2 changed files with 25 additions and 5 deletions

View File

@ -158,6 +158,27 @@ function HistoryStateRenameLayer(oldName, newName, layer) {
saveHistoryState(this);
}
function HistoryStateDuplicateLayer(addedLayer, copiedLayer) {
this.addedLayer = addedLayer;
this.copiedLayer = copiedLayer;
this.undo = function() {
addedLayer.selectLayer();
deleteLayer(false);
redoStates.push(this);
};
this.redo = function() {
copiedLayer.selectLayer();
duplicateLayer(null, false);
undoStates.push(this);
};
saveHistoryState(this);
}
function HistoryStateDeleteLayer(layerData, before, index) {
this.deleted = layerData;
this.before = before;

View File

@ -460,7 +460,7 @@ function deleteLayer(saveHistory = true) {
currentLayer.closeOptionsMenu();
}
function duplicateLayer(event) {
function duplicateLayer(event, saveHistory = true) {
let layerIndex = layers.indexOf(currentLayer);
let toDuplicate = currentLayer;
let menuEntries = layerList.childNodes
@ -504,10 +504,9 @@ function duplicateLayer(event) {
0, 0, currentLayer.canvasSize[0], currentLayer.canvasSize[1]), 0, 0);
newLayer.updateLayerPreview();
// Basically "if I'm not adding a layer because redo() is telling meto do so", then I can save the history
/*if (saveHistory) {
new HistoryStateDuplicateLayer(newLayer, index);
}*/
if (saveHistory) {
new HistoryStateDuplicateLayer(newLayer, currentLayer);
}
}
function renameLayer(event) {