diff --git a/demos/interpreter/step-execution.html b/demos/interpreter/step-execution.html index 606f647cc..165acc471 100644 --- a/demos/interpreter/step-execution.html +++ b/demos/interpreter/step-execution.html @@ -141,6 +141,8 @@ var demoWorkspace = Blockly.inject('blocklyDiv', {media: '../../media/', toolbox: document.getElementById('toolbox')}); + Blockly.JavaScript.STATEMENT_PREFIX = 'highlightBlock(%1);\n'; + Blockly.JavaScript.addReservedWords('highlightBlock'); Blockly.Xml.domToWorkspace(document.getElementById('startBlocks'), demoWorkspace); @@ -174,7 +176,6 @@ } var highlightPause = false; - var latestCode = ''; function highlightBlock(id) { demoWorkspace.highlightBlock(id); @@ -188,14 +189,7 @@ if (clearOutput) { outputArea.value = 'Program output:\n================='; } - } - - function generateCodeAndLoadIntoInterpreter() { - // Generate JavaScript code and parse it. - Blockly.JavaScript.STATEMENT_PREFIX = 'highlightBlock(%1);\n'; - Blockly.JavaScript.addReservedWords('highlightBlock'); - latestCode = Blockly.JavaScript.workspaceToCode(demoWorkspace); - resetStepUi(true); + myInterpreter = null; } function stepCode() { @@ -203,6 +197,7 @@ // First statement of this code. // Clear the program output. resetStepUi(true); + var latestCode = Blockly.JavaScript.workspaceToCode(demoWorkspace); myInterpreter = new Interpreter(latestCode, initApi); // And then show generated code in an alert. @@ -224,7 +219,6 @@ // Program complete, no more code to execute. outputArea.value += '\n\n<< Program complete >>'; - myInterpreter = null; resetStepUi(false); // Cool down, to discourage accidentally restarting the program. @@ -241,12 +235,10 @@ } while (hasMoreCode && !highlightPause); } - // Load the interpreter now, and upon future changes. - generateCodeAndLoadIntoInterpreter(); demoWorkspace.addChangeListener(function(event) { - if (!(event instanceof Blockly.Events.Ui)) { - // Something changed. Parser needs to be reloaded. - generateCodeAndLoadIntoInterpreter(); + if (!event.isUiEvent) { + // Something changed. Interpreter needs to be reloaded. + resetStepUi(true); } });