diff --git a/core/block.js b/core/block.js index e89a37a3a..625465bfb 100644 --- a/core/block.js +++ b/core/block.js @@ -463,7 +463,7 @@ Blockly.Block.prototype.getDescendants = function() { * @return {boolean} True if deletable. */ Blockly.Block.prototype.isDeletable = function() { - return this.deletable_ && + return this.deletable_ && !this.isShadow_ && !(this.workspace && this.workspace.options.readOnly); }; diff --git a/core/xml.js b/core/xml.js index 06a97265a..d2cf29ff5 100644 --- a/core/xml.js +++ b/core/xml.js @@ -140,7 +140,7 @@ Blockly.Xml.blockToDom_ = function(block) { if (block.disabled) { element.setAttribute('disabled', true); } - if (!block.isDeletable()) { + if (!block.isDeletable() && !block.isShadow()) { element.setAttribute('deletable', false); } if (!block.isMovable() && !block.isShadow()) { diff --git a/generators/dart/loops.js b/generators/dart/loops.js index d95c955d1..2be30cc21 100644 --- a/generators/dart/loops.js +++ b/generators/dart/loops.js @@ -146,7 +146,7 @@ Blockly.Dart['controls_forEach'] = function(block) { Blockly.Dart.ORDER_ASSIGNMENT) || '[]'; var branch = Blockly.Dart.statementToCode(block, 'DO'); branch = Blockly.Dart.addLoopTrap(branch, block.id); - var code = 'for (var ' + variable0 + ' in ' + argument0 + ') {\n' + + var code = 'for (var ' + variable0 + ' in ' + argument0 + ') {\n' + branch + '}\n'; return code; };