From bbbb2bc2efcff41f8ff3649a80f0c4b20101b8f4 Mon Sep 17 00:00:00 2001
From: Ray Schamp <ray@scratch.mit.edu>
Date: Tue, 27 Sep 2016 11:50:42 -0400
Subject: [PATCH] Bind workspaceUpdate to vm

Update the workspace when changing the target
---
 src/lib/vm-manager.js | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/lib/vm-manager.js b/src/lib/vm-manager.js
index f9efd49eb..10c561fa2 100644
--- a/src/lib/vm-manager.js
+++ b/src/lib/vm-manager.js
@@ -1,3 +1,5 @@
+const ScratchBlocks = require('scratch-blocks');
+
 module.exports = {
     attachWorkspace: function (vm, workspace) {
         vm.on('STACK_GLOW_ON', data => workspace.glowStack(data.id, true));
@@ -5,6 +7,13 @@ module.exports = {
         vm.on('BLOCK_GLOW_ON', data => workspace.glowBlock(data.id, true));
         vm.on('BLOCK_GLOW_OFF', data => workspace.glowBlock(data.id, false));
         vm.on('VISUAL_REPORT', data => workspace.reportValue(data.id, data.value));
+        vm.on('workspaceUpdate', data => {
+            ScratchBlocks.Events.disable();
+            workspace.clear();
+            let dom = ScratchBlocks.Xml.textToDom(data.xml);
+            ScratchBlocks.Xml.domToWorkspace(dom, workspace);
+            ScratchBlocks.Events.enable();
+        });
     },
     attachMouseEvents: function (vm, stage) {
         document.addEventListener('mousemove', function (e) {
-- 
GitLab