diff --git a/core/variables.js b/core/variables.js index 36cb36358..e23c8cf17 100644 --- a/core/variables.js +++ b/core/variables.js @@ -171,18 +171,20 @@ Blockly.Variables.flyoutCategory = function(workspace) { */ Blockly.Variables.flyoutCategoryBlocks = function(workspace) { var variableModelList = workspace.getVariablesOfType(''); - variableModelList.sort(Blockly.VariableModel.compareByName); var xmlList = []; if (variableModelList.length > 0) { - var firstVariable = variableModelList[0]; + // New variables are added to the end of the variableModelList. + var mostRecentVariableFieldXmlString = + Blockly.Variables.generateVariableFieldXmlString( + variableModelList[variableModelList.length - 1]); if (Blockly.Blocks['variables_set']) { var gap = Blockly.Blocks['math_change'] ? 8 : 24; var blockText = '' + - '' + - Blockly.Variables.generateVariableFieldXmlString(firstVariable) + - '' + - ''; + '' + + mostRecentVariableFieldXmlString + + '' + + ''; var block = Blockly.Xml.textToDom(blockText).firstChild; xmlList.push(block); } @@ -190,7 +192,7 @@ Blockly.Variables.flyoutCategoryBlocks = function(workspace) { var gap = Blockly.Blocks['variables_get'] ? 20 : 8; var blockText = '' + '' + - Blockly.Variables.generateVariableFieldXmlString(firstVariable) + + mostRecentVariableFieldXmlString + '' + '' + '1' + @@ -202,8 +204,9 @@ Blockly.Variables.flyoutCategoryBlocks = function(workspace) { xmlList.push(block); } - for (var i = 0, variable; variable = variableModelList[i]; i++) { - if (Blockly.Blocks['variables_get']) { + if (Blockly.Blocks['variables_get']) { + variableModelList.sort(Blockly.VariableModel.compareByName); + for (var i = 0, variable; variable = variableModelList[i]; i++) { var blockText = '' + '' + Blockly.Variables.generateVariableFieldXmlString(variable) +