mirror of
https://github.com/google/blockly.git
synced 2026-01-09 18:10:08 +01:00
The icons in rendered Blockly currently own the comment text. When a block was deleted the icons were being disposed of before the block info was recorded in the event, which meant the comment was lost. This adds some additional logic to block_svg to make sure the event is captured before the icons are removed.
This commit is contained in:
@@ -837,16 +837,27 @@ Blockly.BlockSvg.prototype.dispose = function(healStack, animate) {
|
||||
this.warningTextDb_ = null;
|
||||
}
|
||||
|
||||
// If the block is rendered we need to record the event before disposing of
|
||||
// the icons to prevent losing information.
|
||||
// TODO (#1969): Remove event generation/firing once comments are fixed.
|
||||
var deleteEvent;
|
||||
if (Blockly.Events.isEnabled()) {
|
||||
deleteEvent = new Blockly.Events.BlockDelete(this);
|
||||
}
|
||||
Blockly.Events.disable();
|
||||
try {
|
||||
var icons = this.getIcons();
|
||||
for (var i = 0; i < icons.length; i++) {
|
||||
icons[i].dispose();
|
||||
}
|
||||
// TODO (#1969): Move out of disable block once comments are fixed.
|
||||
Blockly.BlockSvg.superClass_.dispose.call(this, healStack);
|
||||
} finally {
|
||||
Blockly.Events.enable();
|
||||
}
|
||||
Blockly.BlockSvg.superClass_.dispose.call(this, healStack);
|
||||
if (Blockly.Events.isEnabled() && deleteEvent) {
|
||||
Blockly.Events.fire(deleteEvent);
|
||||
}
|
||||
|
||||
this.svgGroup_.parentNode.removeChild(this.svgGroup_);
|
||||
blockWorkspace.resizeContents();
|
||||
|
||||
Reference in New Issue
Block a user