Don’t save IDs of shadow blocks.

This commit is contained in:
Neil Fraser
2019-07-12 15:49:53 -07:00
committed by Neil Fraser
parent 0e82677f27
commit bbb6e03801

View File

@@ -193,7 +193,7 @@ Blockly.Xml.blockToDom = function(block, opt_noId) {
}
var shadow = input.connection.getShadowDom();
if (shadow && (!childBlock || !childBlock.isShadow())) {
container.appendChild(Blockly.Xml.cloneShadow_(shadow));
container.appendChild(Blockly.Xml.cloneShadow_(shadow, opt_noId));
}
if (childBlock) {
container.appendChild(Blockly.Xml.blockToDom(childBlock, opt_noId));
@@ -233,7 +233,7 @@ Blockly.Xml.blockToDom = function(block, opt_noId) {
}
var shadow = block.nextConnection && block.nextConnection.getShadowDom();
if (shadow && (!nextBlock || !nextBlock.isShadow())) {
container.appendChild(Blockly.Xml.cloneShadow_(shadow));
container.appendChild(Blockly.Xml.cloneShadow_(shadow, opt_noId));
}
return element;
@@ -242,15 +242,21 @@ Blockly.Xml.blockToDom = function(block, opt_noId) {
/**
* Deeply clone the shadow's DOM so that changes don't back-wash to the block.
* @param {!Element} shadow A tree of XML elements.
* @param {boolean=} opt_noId True if the encoder should skip the block ID.
* @return {!Element} A tree of XML elements.
* @private
*/
Blockly.Xml.cloneShadow_ = function(shadow) {
Blockly.Xml.cloneShadow_ = function(shadow, opt_noId) {
shadow = shadow.cloneNode(true);
// Walk the tree looking for whitespace. Don't prune whitespace in a tag.
var node = shadow;
var textNode;
while (node) {
if (opt_noId && node.nodeName == 'shadow') {
// Strip off IDs from shadow blocks. There should never be a 'block' as
// a child of a 'shadow', so no need to check that.
node.removeAttribute('id');
}
if (node.firstChild) {
node = node.firstChild;
} else {