Detect undefined elements in the debugger and remove undefined elem if a row has no elements when adding spacers. (#3576)

This commit is contained in:
Sam El-Husseini
2020-01-11 17:33:20 -08:00
committed by GitHub
parent c2087e61f5
commit e1472a3600
3 changed files with 12 additions and 1 deletions

View File

@@ -282,7 +282,12 @@ Blockly.blockRendering.Debug.prototype.drawRenderedRow = function(row, cursorY,
* @package
*/
Blockly.blockRendering.Debug.prototype.drawRowWithElements = function(row, cursorY, isRtl) {
for (var i = 0, elem; (elem = row.elements[i]); i++) {
for (var i = 0, l = row.elements.length; i < l; i++) {
var elem = row.elements[i];
if (!elem) {
console.warn('A row has an undefined or null element.', row, elem);
continue;
}
if (Blockly.blockRendering.Types.isSpacer(elem)) {
this.drawSpacerElem(
/** @type {!Blockly.blockRendering.InRowSpacer} */ (elem),

View File

@@ -435,6 +435,9 @@ Blockly.blockRendering.RenderInfo.prototype.addElemSpacing_ = function() {
row.elements.push(new Blockly.blockRendering.InRowSpacer(
this.constants_, this.getInRowSpacing_(null, oldElems[0])));
}
if (!oldElems.length) {
continue;
}
for (var e = 0; e < oldElems.length - 1; e++) {
row.elements.push(oldElems[e]);
var spacing = this.getInRowSpacing_(oldElems[e], oldElems[e + 1]);

View File

@@ -143,6 +143,9 @@ Blockly.geras.RenderInfo.prototype.addElemSpacing_ = function() {
row.elements.push(new Blockly.blockRendering.InRowSpacer(
this.constants_, this.getInRowSpacing_(null, oldElems[0])));
}
if (!oldElems.length) {
continue;
}
for (var e = 0; e < oldElems.length - 1; e++) {
row.elements.push(oldElems[e]);
var spacing = this.getInRowSpacing_(oldElems[e], oldElems[e + 1]);