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?
if (e.newParent === undefined) {
_this._addStack(e.id);
} else {
// Remove stack, if one exists.
_this._deleteStack(e.id); _this._deleteStack(e.id);
// Otherwise, try to connect it in its new place.
// Update new parent if (e.newInput !== undefined) {
if (e.newField === undefined) { // Moved to the new parent's input.
_this.blocks[e.newParent].next = e.id; _this.blocks[e.newParent].inputs[e.newInput] = {
} else { name: e.newInput,
_this.blocks[e.newParent].fields[e.newField] = { block: e.id
name: e.newField,
value: e.id,
blocks: {}
}; };
} else {
// Moved to the new parent's next connection.
_this.blocks[e.newParent].next = e.id;
} }
} }
}; };