mirror of
https://github.com/google/blockly.git
synced 2026-01-04 23:50:12 +01:00
fix: mutators disconnecting from children instead of moving them (#6047)
* fix: mutators disconnecting from children instead of moving them * fix: debug build
This commit is contained in:
@@ -198,10 +198,13 @@ blocks['lists_create_with'] = {
|
||||
let itemBlock = containerBlock.getInputTargetBlock('STACK');
|
||||
// Count number of inputs.
|
||||
const connections = [];
|
||||
while (itemBlock && !itemBlock.isInsertionMarker()) {
|
||||
while (itemBlock) {
|
||||
if (itemBlock.isInsertionMarker()) {
|
||||
itemBlock = itemBlock.getNextBlock();
|
||||
continue;
|
||||
}
|
||||
connections.push(itemBlock.valueConnection_);
|
||||
itemBlock =
|
||||
itemBlock.nextConnection && itemBlock.nextConnection.targetBlock();
|
||||
itemBlock = itemBlock.getNextBlock();
|
||||
}
|
||||
// Disconnect any children that don't belong.
|
||||
for (let i = 0; i < this.itemCount_; i++) {
|
||||
@@ -226,10 +229,13 @@ blocks['lists_create_with'] = {
|
||||
let itemBlock = containerBlock.getInputTargetBlock('STACK');
|
||||
let i = 0;
|
||||
while (itemBlock) {
|
||||
if (itemBlock.isInsertionMarker()) {
|
||||
itemBlock = itemBlock.getNextBlock();
|
||||
continue;
|
||||
}
|
||||
const input = this.getInput('ADD' + i);
|
||||
itemBlock.valueConnection_ = input && input.connection.targetConnection;
|
||||
itemBlock =
|
||||
itemBlock.nextConnection && itemBlock.nextConnection.targetBlock();
|
||||
itemBlock = itemBlock.getNextBlock();
|
||||
i++;
|
||||
}
|
||||
},
|
||||
|
||||
@@ -394,7 +394,11 @@ const CONTROLS_IF_MUTATOR_MIXIN = {
|
||||
const valueConnections = [null];
|
||||
const statementConnections = [null];
|
||||
let elseStatementConnection = null;
|
||||
while (clauseBlock && !clauseBlock.isInsertionMarker()) {
|
||||
while (clauseBlock) {
|
||||
if (clauseBlock.isInsertionMarker()) {
|
||||
clauseBlock = clauseBlock.getNextBlock();
|
||||
continue;
|
||||
}
|
||||
switch (clauseBlock.type) {
|
||||
case 'controls_if_elseif':
|
||||
this.elseifCount_++;
|
||||
@@ -408,8 +412,7 @@ const CONTROLS_IF_MUTATOR_MIXIN = {
|
||||
default:
|
||||
throw TypeError('Unknown block type: ' + clauseBlock.type);
|
||||
}
|
||||
clauseBlock = clauseBlock.nextConnection &&
|
||||
clauseBlock.nextConnection.targetBlock();
|
||||
clauseBlock = clauseBlock.getNextBlock();
|
||||
}
|
||||
this.updateShape_();
|
||||
// Reconnect any child blocks.
|
||||
@@ -425,6 +428,10 @@ const CONTROLS_IF_MUTATOR_MIXIN = {
|
||||
let clauseBlock = containerBlock.nextConnection.targetBlock();
|
||||
let i = 1;
|
||||
while (clauseBlock) {
|
||||
if (clauseBlock.isInsertionMarker()) {
|
||||
clauseBlock = clauseBlock.getNextBlock();
|
||||
continue;
|
||||
}
|
||||
switch (clauseBlock.type) {
|
||||
case 'controls_if_elseif': {
|
||||
const inputIf = this.getInput('IF' + i);
|
||||
@@ -445,8 +452,7 @@ const CONTROLS_IF_MUTATOR_MIXIN = {
|
||||
default:
|
||||
throw TypeError('Unknown block type: ' + clauseBlock.type);
|
||||
}
|
||||
clauseBlock = clauseBlock.nextConnection &&
|
||||
clauseBlock.nextConnection.targetBlock();
|
||||
clauseBlock = clauseBlock.getNextBlock();
|
||||
}
|
||||
},
|
||||
/**
|
||||
|
||||
@@ -781,10 +781,13 @@ const TEXT_JOIN_MUTATOR_MIXIN = {
|
||||
let itemBlock = containerBlock.getInputTargetBlock('STACK');
|
||||
// Count number of inputs.
|
||||
const connections = [];
|
||||
while (itemBlock && !itemBlock.isInsertionMarker()) {
|
||||
while (itemBlock) {
|
||||
if (itemBlock.isInsertionMarker()) {
|
||||
itemBlock = itemBlock.getNextBlock();
|
||||
continue;
|
||||
}
|
||||
connections.push(itemBlock.valueConnection_);
|
||||
itemBlock =
|
||||
itemBlock.nextConnection && itemBlock.nextConnection.targetBlock();
|
||||
itemBlock = itemBlock.getNextBlock();
|
||||
}
|
||||
// Disconnect any children that don't belong.
|
||||
for (let i = 0; i < this.itemCount_; i++) {
|
||||
@@ -809,10 +812,13 @@ const TEXT_JOIN_MUTATOR_MIXIN = {
|
||||
let itemBlock = containerBlock.getInputTargetBlock('STACK');
|
||||
let i = 0;
|
||||
while (itemBlock) {
|
||||
if (itemBlock.isInsertionMarker()) {
|
||||
itemBlock = itemBlock.getNextBlock();
|
||||
continue;
|
||||
}
|
||||
const input = this.getInput('ADD' + i);
|
||||
itemBlock.valueConnection_ = input && input.connection.targetConnection;
|
||||
itemBlock =
|
||||
itemBlock.nextConnection && itemBlock.nextConnection.targetBlock();
|
||||
itemBlock = itemBlock.getNextBlock();
|
||||
i++;
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user