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) +
diff --git a/core/variables_dynamic.js b/core/variables_dynamic.js
index 51d1d110f..d09c2aa0c 100644
--- a/core/variables_dynamic.js
+++ b/core/variables_dynamic.js
@@ -89,12 +89,11 @@ Blockly.VariablesDynamic.flyoutCategory = function(workspace) {
*/
Blockly.VariablesDynamic.flyoutCategoryBlocks = function(workspace) {
var variableModelList = workspace.getAllVariables();
- variableModelList.sort(Blockly.VariableModel.compareByName);
var xmlList = [];
if (variableModelList.length > 0) {
if (Blockly.Blocks['variables_set_dynamic']) {
- var firstVariable = variableModelList[0];
+ var firstVariable = variableModelList[variableModelList.length - 1];
var gap = 24;
var blockText = '' +
'' +
@@ -105,6 +104,7 @@ Blockly.VariablesDynamic.flyoutCategoryBlocks = function(workspace) {
xmlList.push(block);
}
if (Blockly.Blocks['variables_get_dynamic']) {
+ variableModelList.sort(Blockly.VariableModel.compareByName);
for (var i = 0, variable; variable = variableModelList[i]; i++) {
var blockText = '' +
'' +