diff --git a/src/containers/blocks.jsx b/src/containers/blocks.jsx index 47d12661cfebe65ee23e33efa6efd8d7332ad388..c1a7a2f60e15c8b097dfa6f2839b5bc0a7bdc5f6 100644 --- a/src/containers/blocks.jsx +++ b/src/containers/blocks.jsx @@ -175,7 +175,9 @@ class Blocks extends React.Component { // When we change sprites, update the toolbox to have the new sprite's blocks if (this.props.vm.editingTarget) { const target = this.props.vm.editingTarget; - this.props.updateToolboxState(makeToolboxXML(target.isStage, target.id)); + const dynamicBlocksXML = this.props.vm.runtime.getBlocksXML(); + const toolboxXML = makeToolboxXML(target.isStage, target.id, dynamicBlocksXML); + this.props.updateToolboxState(toolboxXML); } if (this.props.vm.editingTarget && !this.state.workspaceMetrics[this.props.vm.editingTarget.id]) { diff --git a/test/integration/test.js b/test/integration/test.js index 4096c2d909b081756d8345df7d892a75013c7d5c..9624fb8a76770a959ba6020c736008428c7bbdd5 100644 --- a/test/integration/test.js +++ b/test/integration/test.js @@ -156,6 +156,9 @@ describe('costumes, sounds and variables', () => { await new Promise(resolve => setTimeout(resolve, 1000)); // Wait for scroll animation await clickText('stamp', blocksTabScope); // Would fail if didn't scroll back + // Make sure switching sprites doesn't clear extensions + await clickText('Backdrops'); // Switch to the backdrop + await findByText('Pen', blocksTabScope); // Pen extension should still be loaded const logs = await getLogs(errorWhitelist); await expect(logs).toEqual([]);