diff --git a/core/field.js b/core/field.js index b87a0129c..433586728 100644 --- a/core/field.js +++ b/core/field.js @@ -58,7 +58,11 @@ Blockly.Field = function(value, opt_validator, opt_config) { this.size_ = new Blockly.utils.Size(0, 0); if (opt_config) { - var tooltip = Blockly.utils.replaceMessageReferences(opt_config['tooltip']); + var tooltip = opt_config['tooltip']; + if (typeof tooltip == 'string') { + tooltip = Blockly.utils.replaceMessageReferences( + opt_config['tooltip']); + } tooltip && this.setTooltip(tooltip); // TODO: Possibly eventually add configurations like cursor and css class. diff --git a/tests/mocha/field_test.js b/tests/mocha/field_test.js index 2a2c8c545..3ae3024fb 100644 --- a/tests/mocha/field_test.js +++ b/tests/mocha/field_test.js @@ -359,6 +359,15 @@ suite('Abstract Fields', function() { }); chai.assert.equal(field.tooltip_, 'test tooltip'); }); + test('JS Constructor - Dynamic', function() { + var returnTooltip = function() { + return 'dynamic tooltip text'; + }; + var field = new Blockly.Field('value', null, { + tooltip: returnTooltip + }); + chai.assert.equal(field.tooltip_, returnTooltip); + }); test('JSON Definition', function() { var field = CustomField.fromJson({ tooltip: "test tooltip"