From d71b9c68a0ebe11675638f09e74f62ba710e0d07 Mon Sep 17 00:00:00 2001 From: Aaron Imming Date: Tue, 19 Oct 2021 01:07:07 +0800 Subject: [PATCH] fix: group context menu collapse blocks events (#5501) --- core/contextmenu_items.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/core/contextmenu_items.js b/core/contextmenu_items.js index d0b085f88..e2e8bcd58 100644 --- a/core/contextmenu_items.js +++ b/core/contextmenu_items.js @@ -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; }