From 1f6c8f02065742ec02200d02b2feb91492b9a963 Mon Sep 17 00:00:00 2001 From: Aaron Dodson Date: Fri, 18 Jun 2021 20:26:17 +0000 Subject: [PATCH] Reflow flyouts when zoom level changes to keep block zoom level in sync. --- core/flyout_base.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/core/flyout_base.js b/core/flyout_base.js index 84d6d3870..96ac19c46 100644 --- a/core/flyout_base.js +++ b/core/flyout_base.js @@ -296,6 +296,9 @@ Blockly.Flyout.prototype.init = function(targetWorkspace) { this.targetWorkspace.addChangeListener(this.filterWrapper_); } + var zoomHandler = this.handleZoom_.bind(this); + this.targetWorkspace.addChangeListener(zoomHandler); + // Dragging the flyout up and down. Array.prototype.push.apply( this.eventWrappers_, @@ -960,6 +963,19 @@ Blockly.Flyout.prototype.filterForCapacity_ = function() { } }; +/** + * Responds to workplace zoom events by reflowing the flyout to ensure that + * blocks in the flyout adjust to the new zoom level. + * @param {!Blockly.Events.Abstract} event The Blockly event that was fired. + * @private + */ +Blockly.Flyout.prototype.handleZoom_ = function(event) { + if (event.type === Blockly.Events.CLICK && + event.targetType === 'zoom_controls') { + this.reflow(); + } +}; + /** * Reflow blocks and their mats. */