Fix duplicate layer undo-redo

This commit is contained in:
MathemanFlo
2022-03-16 21:15:35 +01:00
parent 35d89ce63d
commit 39dccc28f0
3 changed files with 12 additions and 13 deletions
+10 -2
View File
@@ -73,7 +73,12 @@ class History {
Context.layerPreviewDirty = true;
}
else if (step.name == tr("Duplicate Layer")) {
Context.layer = Project.layers[step.layer + 1];
var children = Project.layers[step.layer].getRecursiveChildren();
var position = step.layer + 1;
if (children != null)
position += children.length;
Context.layer = Project.layers[position];
Context.layer.delete();
}
else if (step.name == tr("Order Layers")) {
@@ -266,7 +271,10 @@ class History {
}
else if (step.name == tr("Duplicate Layer")) {
Context.layer = Project.layers[step.layer];
Context.layer = Context.layer.duplicate();
function _next() {
Layers.duplicateLayer(Context.layer);
}
App.notifyOnNextFrame(_next);
}
else if (step.name == tr("Order Layers")) {
var target = Project.layers[step.prev_order];
-11
View File
@@ -372,15 +372,11 @@ class Layers {
public static function duplicateLayer(l: LayerSlot) {
if (!l.isGroup()) {
Context.setLayer(l);
History.duplicateLayer();
var newLayer = l.duplicate();
Context.setLayer(newLayer);
var masks = l.getMasks(false);
if (masks != null) {
for (m in masks) {
Context.setLayer(m);
History.duplicateLayer();
m = m.duplicate();
m.parent = newLayer;
Project.layers.remove(m);
@@ -390,23 +386,18 @@ class Layers {
Context.setLayer(newLayer);
}
else {
// TODO: add undo-redo support for creating a new group
var newGroup = Layers.newGroup();
Project.layers.remove(newGroup);
Project.layers.insert(Project.layers.indexOf(l) + 1, newGroup);
// group.show_panel = true;
for (c in l.getChildren()) {
var masks = c.getMasks(false);
Context.setLayer(c);
History.duplicateLayer();
var newLayer = c.duplicate();
newLayer.parent = newGroup;
Project.layers.remove(newLayer);
Project.layers.insert(Project.layers.indexOf(newGroup), newLayer);
if (masks != null) {
for (m in masks) {
Context.setLayer(m);
History.duplicateLayer();
var newMask = m.duplicate();
newMask.parent = newLayer;
Project.layers.remove(newMask);
@@ -417,8 +408,6 @@ class Layers {
var groupMasks = l.getMasks();
if (groupMasks != null) {
for (m in groupMasks) {
Context.setLayer(m);
History.duplicateLayer();
var newMask = m.duplicate();
newMask.parent = newGroup;
Project.layers.remove(newMask);
+2
View File
@@ -619,6 +619,8 @@ class TabLayers {
ui.enabled = true;
if (ui.button(tr("Duplicate"), Left)) {
function _init() {
Context.setLayer(l);
History.duplicateLayer();
Layers.duplicateLayer(l);
}
iron.App.notifyOnInit(_init);