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) +