fix: group context menu collapse blocks events (#5501)

This commit is contained in:
Aaron Imming
2021-10-19 01:07:07 +08:00
committed by GitHub
parent 063c8ad91e
commit d71b9c68a0

View File

@@ -16,6 +16,7 @@
goog.module('Blockly.ContextMenuItems');
const ContextMenuRegistry = goog.require('Blockly.ContextMenuRegistry');
const Events = goog.require('Blockly.Events');
const Msg = goog.require('Blockly.Msg');
/* eslint-disable-next-line no-unused-vars */
const WorkspaceSvg = goog.requireType('Blockly.WorkspaceSvg');
@@ -128,10 +129,20 @@ exports.registerCleanup = registerCleanup;
const toggleOption_ = function(shouldCollapse, topBlocks) {
const DELAY = 10;
let ms = 0;
let timeoutCounter = 0;
const timeoutFn = function(block) {
timeoutCounter--;
block.setCollapsed(shouldCollapse);
if (timeoutCounter === 0) {
Events.setGroup(false);
}
};
Events.setGroup(true);
for (let i = 0; i < topBlocks.length; i++) {
let block = topBlocks[i];
while (block) {
setTimeout(block.setCollapsed.bind(block, shouldCollapse), ms);
timeoutCounter++;
setTimeout(timeoutFn.bind(null, block), ms);
block = block.getNextBlock();
ms += DELAY;
}