diff --git a/core/css.js b/core/css.js
index 6512fd496..a4babe270 100644
--- a/core/css.js
+++ b/core/css.js
@@ -295,10 +295,6 @@ Blockly.Css.CONTENT = [
'fill: #000;',
'}',
- '.blocklyFlyoutLabelText.clickable:hover {',
- 'fill: #aaa;',
- '}',
-
/*
Don't allow users to select text. It gets annoying when trying to
drag a block and selected text moves instead.
diff --git a/core/flyout.js b/core/flyout.js
index a1b16c425..ceeaf211c 100644
--- a/core/flyout.js
+++ b/core/flyout.js
@@ -702,11 +702,8 @@ Blockly.Flyout.prototype.show = function(xmlList) {
} else if (tagName == 'BUTTON' || tagName == 'LABEL') {
// Labels behave the same as buttons, but are styled differently.
var isLabel = tagName == 'LABEL';
- var text = xml.getAttribute('text');
- var callbackKey = xml.getAttribute('callbackKey');
- var className = xml.getAttribute('class');
var curButton = new Blockly.FlyoutButton(this.workspace_,
- this.targetWorkspace_, text, callbackKey, isLabel, className);
+ this.targetWorkspace_, xml, isLabel);
contents.push({type: 'button', button: curButton});
gaps.push(default_gap);
}
diff --git a/core/flyout_button.js b/core/flyout_button.js
index 7f6aedd26..93a934c0b 100644
--- a/core/flyout_button.js
+++ b/core/flyout_button.js
@@ -35,16 +35,13 @@ goog.require('goog.math.Coordinate');
* @param {!Blockly.WorkspaceSvg} workspace The workspace in which to place this
* button.
* @param {!Blockly.WorkspaceSvg} targetWorkspace The flyout's target workspace.
- * @param {string} text The text to display on the button.
- * @param {string} callbackKey The key to use when looking up the callback for a
- * click on this button.
+ * @param {!Element} xml The xml specifying the label/button.
* @param {boolean} isLabel Whether this button should be styled as a label.
- * @param {string=} opt_cssClass Optional parameter specifying a CSS class to
- * add to this button.
* @constructor
*/
-Blockly.FlyoutButton = function(workspace, targetWorkspace, text, callbackKey,
- isLabel, opt_cssClass) {
+Blockly.FlyoutButton = function(workspace, targetWorkspace, xml, isLabel) {
+ // Labels behave the same as buttons, but are styled differently.
+
/**
* @type {!Blockly.WorkspaceSvg}
* @private
@@ -61,7 +58,7 @@ Blockly.FlyoutButton = function(workspace, targetWorkspace, text, callbackKey,
* @type {string}
* @private
*/
- this.text_ = text;
+ this.text_ = xml.getAttribute('text');
/**
* @type {!goog.math.Coordinate}
@@ -69,13 +66,6 @@ Blockly.FlyoutButton = function(workspace, targetWorkspace, text, callbackKey,
*/
this.position_ = new goog.math.Coordinate(0, 0);
- /**
- * Function to call when this button is clicked.
- * @type {function(!Blockly.FlyoutButton)}
- * @private
- */
- this.callback_ = Blockly.flyoutButtonCallbacks_[callbackKey];
-
/**
* Whether this button should be styled as a label.
* @type {boolean}
@@ -83,12 +73,29 @@ Blockly.FlyoutButton = function(workspace, targetWorkspace, text, callbackKey,
*/
this.isLabel_ = isLabel;
+ /**
+ * Function to call when this button is clicked.
+ * @type {function(!Blockly.FlyoutButton)}
+ * @private
+ */
+ this.callback_ = null;
+
+ var callbackKey = xml.getAttribute('callbackKey');
+ if (this.isLabel_ && callbackKey) {
+ console.log ('Labels should not have callbacks. Label text: ' + this.text_);
+ } else if (!this.isLabel_ &&
+ !(callbackKey && Blockly.flyoutButtonCallbacks_[callbackKey])) {
+ console.log('Buttons should have callbacks. Button text: ' + this.text_);
+ } else {
+ this.callback_ = Blockly.flyoutButtonCallbacks_[callbackKey];
+ }
+
/**
* If specified, a CSS class to add to this button.
* @type {?string}
* @private
*/
- this.cssClass_ = opt_cssClass || null;
+ this.cssClass_ = xml.getAttribute('class') || null;
};
/**
@@ -135,13 +142,9 @@ Blockly.FlyoutButton.prototype.createDom = function() {
'rx': 4, 'ry': 4},
this.svgGroup_);
- cssClass = this.isLabel_ ? 'blocklyFlyoutLabelText' : 'blocklyText';
- if (this.isLabel_ && this.callback_) {
- cssClass += ' clickable';
- }
-
var svgText = Blockly.createSvgElement('text',
- {'class': cssClass, 'x': 0, 'y': 0, 'text-anchor': 'middle'},
+ {'class': this.isLabel_ ? 'blocklyFlyoutLabelText' : 'blocklyText',
+ 'x': 0, 'y': 0, 'text-anchor': 'middle'},
this.svgGroup_);
svgText.textContent = this.text_;
diff --git a/tests/playground.html b/tests/playground.html
index 06776887d..0167e89a1 100644
--- a/tests/playground.html
+++ b/tests/playground.html
@@ -115,7 +115,6 @@ function start() {
logEvents(false);
}
taChange();
- Blockly.registerButtonCallback('logStuff', function(){console.log('stuff!');});
}
function getToolboxElement() {
@@ -592,7 +591,7 @@ h1 {
-
+