Rewrite of moveBlock to better reflect Blockly

This commit is contained in:
Tim Mickel 2016-06-06 14:54:45 -04:00
parent 214daa8087
commit aa152fd604

View file

@ -121,34 +121,35 @@ Runtime.prototype.changeBlock = function (args) {
Runtime.prototype.moveBlock = function (e) { Runtime.prototype.moveBlock = function (e) {
var _this = this; var _this = this;
// Block was removed from parent // Remove from any old parent.
if (e.newParent === undefined && e.oldParent !== undefined) { if (e.oldParent !== undefined) {
_this.addStack(e.id); var oldParent = _this.blocks[e.oldParent];
if (e.oldInput !== undefined &&
// Update old parent oldParent.inputs[e.oldInput].block === e.id) {
if (e.oldField === undefined) { // This block was connected to the old parent's input.
_this.blocks[e.oldParent].next = null; oldParent.inputs[e.oldInput].block = null;
} else { } else if (oldParent.next === e.id) {
delete _this.blocks[e.oldParent].fields[e.oldField]; // This block was connected to the old parent's next connection.
oldParent.next = null;
}
} }
} else if (e.newParent !== undefined) {
// Block was moved to a new parent
// Either happens because it was previously parentless
// (e.oldParent === undefined)
// or because a block was moved in front of it.
// Remove stack // Has the block become a top-level block?
_this._deleteStack(e.id); if (e.newParent === undefined) {
_this._addStack(e.id);
// Update new parent
if (e.newField === undefined) {
_this.blocks[e.newParent].next = e.id;
} else { } else {
_this.blocks[e.newParent].fields[e.newField] = { // Remove stack, if one exists.
name: e.newField, _this._deleteStack(e.id);
value: e.id, // Otherwise, try to connect it in its new place.
blocks: {} if (e.newInput !== undefined) {
// Moved to the new parent's input.
_this.blocks[e.newParent].inputs[e.newInput] = {
name: e.newInput,
block: e.id
}; };
} else {
// Moved to the new parent's next connection.
_this.blocks[e.newParent].next = e.id;
} }
} }
}; };