Fixed losing field names on undo/redo moved nodes
This commit is contained in:
parent
f47d17e377
commit
b93ba1106c
|
@ -136,7 +136,8 @@ function History (editor) {
|
||||||
// first copy the nodes, then move them
|
// first copy the nodes, then move them
|
||||||
var nodes = newParentNode.childs.slice(params.newIndex, params.newIndex + params.count);
|
var nodes = newParentNode.childs.slice(params.newIndex, params.newIndex + params.count);
|
||||||
|
|
||||||
nodes.forEach(function (node) {
|
nodes.forEach(function (node, index) {
|
||||||
|
node.field = params.fieldNames[index];
|
||||||
oldParentNode.moveBefore(node, oldBeforeNode);
|
oldParentNode.moveBefore(node, oldBeforeNode);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -149,7 +150,8 @@ function History (editor) {
|
||||||
// first copy the nodes, then move them
|
// first copy the nodes, then move them
|
||||||
var nodes = oldParentNode.childs.slice(params.oldIndex, params.oldIndex + params.count);
|
var nodes = oldParentNode.childs.slice(params.oldIndex, params.oldIndex + params.count);
|
||||||
|
|
||||||
nodes.forEach(function (node) {
|
nodes.forEach(function (node, index) {
|
||||||
|
node.field = params.fieldNames[index];
|
||||||
newParentNode.moveBefore(node, newBeforeNode);
|
newParentNode.moveBefore(node, newBeforeNode);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1990,20 +1990,23 @@ Node.onDragEnd = function (nodes, event) {
|
||||||
nodes[0].dom.menu.focus();
|
nodes[0].dom.menu.focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
var params = {
|
var oldParentPath = editor.drag.oldParent.getPath();
|
||||||
count: nodes.length,
|
var newParentPath = firstNode.parent.getPath();
|
||||||
oldParentPath: editor.drag.oldParent.getPath(),
|
var oldIndex = editor.drag.oldIndex;
|
||||||
newParentPath: firstNode.parent.getPath(),
|
var newIndex = firstNode.getIndex();
|
||||||
oldIndex: editor.drag.oldIndex,
|
|
||||||
newIndex: firstNode.getIndex(),
|
|
||||||
oldSelection: editor.drag.oldSelection,
|
|
||||||
newSelection: editor.getDomSelection()
|
|
||||||
};
|
|
||||||
|
|
||||||
if (JSON.stringify(params.oldParentPath) !== JSON.stringify(params.newParentPath) ||
|
if (JSON.stringify(oldParentPath) !== JSON.stringify(newParentPath) || oldIndex !== newIndex) {
|
||||||
params.oldIndex !== params.newIndex) {
|
|
||||||
// only register this action if the node is actually moved to another place
|
// only register this action if the node is actually moved to another place
|
||||||
editor._onAction('moveNodes', params);
|
editor._onAction('moveNodes', {
|
||||||
|
count: nodes.length,
|
||||||
|
fieldNames: nodes.map(getField),
|
||||||
|
oldParentPath: oldParentPath,
|
||||||
|
newParentPath: newParentPath,
|
||||||
|
oldIndex: oldIndex,
|
||||||
|
newIndex: newIndex,
|
||||||
|
oldSelection: editor.drag.oldSelection,
|
||||||
|
newSelection: editor.getDomSelection()
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
document.body.style.cursor = editor.drag.oldCursor;
|
document.body.style.cursor = editor.drag.oldCursor;
|
||||||
|
@ -2799,6 +2802,7 @@ Node.prototype.onKeyDown = function (event) {
|
||||||
|
|
||||||
this.editor._onAction('moveNodes', {
|
this.editor._onAction('moveNodes', {
|
||||||
count: selectedNodes.length,
|
count: selectedNodes.length,
|
||||||
|
fieldNames: selectedNodes.map(getField),
|
||||||
oldParentPath: oldParent.getPath(),
|
oldParentPath: oldParent.getPath(),
|
||||||
newParentPath: firstNode.parent.getPath(),
|
newParentPath: firstNode.parent.getPath(),
|
||||||
oldIndex: oldIndex,
|
oldIndex: oldIndex,
|
||||||
|
@ -2849,6 +2853,7 @@ Node.prototype.onKeyDown = function (event) {
|
||||||
|
|
||||||
this.editor._onAction('moveNodes', {
|
this.editor._onAction('moveNodes', {
|
||||||
count: selectedNodes.length,
|
count: selectedNodes.length,
|
||||||
|
fieldNames: selectedNodes.map(getField),
|
||||||
oldParentPath: oldParent.getPath(),
|
oldParentPath: oldParent.getPath(),
|
||||||
newParentPath: firstNode.parent.getPath(),
|
newParentPath: firstNode.parent.getPath(),
|
||||||
oldIndex: oldIndex,
|
oldIndex: oldIndex,
|
||||||
|
@ -2886,6 +2891,7 @@ Node.prototype.onKeyDown = function (event) {
|
||||||
|
|
||||||
this.editor._onAction('moveNodes', {
|
this.editor._onAction('moveNodes', {
|
||||||
count: selectedNodes.length,
|
count: selectedNodes.length,
|
||||||
|
fieldNames: selectedNodes.map(getField),
|
||||||
oldParentPath: oldParent.getPath(),
|
oldParentPath: oldParent.getPath(),
|
||||||
newParentPath: firstNode.parent.getPath(),
|
newParentPath: firstNode.parent.getPath(),
|
||||||
oldIndex: oldIndex,
|
oldIndex: oldIndex,
|
||||||
|
@ -2952,6 +2958,7 @@ Node.prototype.onKeyDown = function (event) {
|
||||||
|
|
||||||
this.editor._onAction('moveNodes', {
|
this.editor._onAction('moveNodes', {
|
||||||
count: selectedNodes.length,
|
count: selectedNodes.length,
|
||||||
|
fieldNames: selectedNodes.map(getField),
|
||||||
oldParentPath: oldParent.getPath(),
|
oldParentPath: oldParent.getPath(),
|
||||||
newParentPath: firstNode.parent.getPath(),
|
newParentPath: firstNode.parent.getPath(),
|
||||||
oldIndex: oldIndex,
|
oldIndex: oldIndex,
|
||||||
|
@ -4060,11 +4067,16 @@ Node.prototype._escapeJSON = function (text) {
|
||||||
return escaped;
|
return escaped;
|
||||||
};
|
};
|
||||||
|
|
||||||
// helper function to the get path of a node
|
// helper function to get the path of a node
|
||||||
function getPath (node) {
|
function getPath (node) {
|
||||||
return node.getPath();
|
return node.getPath();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// helper function to get the field of a node
|
||||||
|
function getField (node) {
|
||||||
|
return node.getField();
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: find a nicer solution to resolve this circular dependency between Node and AppendNode
|
// TODO: find a nicer solution to resolve this circular dependency between Node and AppendNode
|
||||||
// idea: introduce properties .isAppendNode and .isNode and use that instead of instanceof AppendNode checks
|
// idea: introduce properties .isAppendNode and .isNode and use that instead of instanceof AppendNode checks
|
||||||
var AppendNode = appendNodeFactory(Node);
|
var AppendNode = appendNodeFactory(Node);
|
||||||
|
|
Loading…
Reference in New Issue