diff --git a/core/field_colour.js b/core/field_colour.js
index 5f26899ad..559ed95ec 100644
--- a/core/field_colour.js
+++ b/core/field_colour.js
@@ -63,7 +63,14 @@ goog.inherits(Blockly.FieldColour, Blockly.Field);
* @nocollapse
*/
Blockly.FieldColour.fromJson = function(options) {
- return new Blockly.FieldColour(options['colour']);
+ var field = new Blockly.FieldColour(options['colour']);
+ if (options['colourOptions']) {
+ field.setColours(options['colourOptions'], options['colourTitles']);
+ }
+ if (options['columns']) {
+ field.setColumns(options['columns']);
+ }
+ return field;
};
/**
diff --git a/tests/blocks/test_blocks.js b/tests/blocks/test_blocks.js
index 19c9c5f26..611453bac 100644
--- a/tests/blocks/test_blocks.js
+++ b/tests/blocks/test_blocks.js
@@ -257,6 +257,26 @@ Blockly.defineBlocksWithJsonArray([ // BEGIN JSON EXTRACT
"tooltip": "",
"helpUrl": ""
},
+ {
+ "type": "test_fields_colour_options",
+ "message0": "colour options %1",
+ "args0": [
+ {
+ "type": "field_colour",
+ "name": "COLOUR",
+ "colour": "#ff4040",
+ "colourOptions":
+ ['#ff4040', '#ff8080', '#ffc0c0',
+ '#4040ff', '#8080ff', '#c0c0ff'],
+ "colourTitles":
+ ['dark pink', 'pink', 'light pink',
+ 'dark blue', 'blue', 'light blue'],
+ "columns": 3
+ }
+ ],
+ "style": "math_blocks",
+ "tooltip": "test tooltip"
+ },
{
"type": "test_fields_variable",
"message0": "variable %1",
diff --git a/tests/playground.html b/tests/playground.html
index 780daf2d3..b49326a5e 100644
--- a/tests/playground.html
+++ b/tests/playground.html
@@ -1305,6 +1305,7 @@ h1 {
+