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. */