From 5b033e2f7b01e7b62ebe206578836e6f7f558758 Mon Sep 17 00:00:00 2001 From: Neil Fraser Date: Sat, 5 Nov 2016 00:15:39 -0700 Subject: [PATCH] Misc cleanup. --- core/block.js | 2 +- core/contextmenu.js | 3 ++- core/field.js | 2 +- core/utils.js | 6 +++--- demos/blockfactory/app_controller.js | 18 ++++++++++-------- demos/blockfactory/blocks.js | 2 +- demos/blockfactory/devtools.png | Bin 13114 -> 0 bytes demos/blockfactory/icon.png | Bin 4441 -> 11824 bytes demos/blockfactory/index.html | 5 ++--- demos/index.html | 2 +- 10 files changed, 21 insertions(+), 19 deletions(-) delete mode 100644 demos/blockfactory/devtools.png diff --git a/core/block.js b/core/block.js index 60dba2745..c3f9f9f3d 100644 --- a/core/block.js +++ b/core/block.js @@ -631,7 +631,7 @@ Blockly.Block.prototype.getColour = function() { * @param {number|string} colour HSV hue value, or #RRGGBB string. */ Blockly.Block.prototype.setColour = function(colour) { - var hue = parseFloat(colour); + var hue = Number(colour); if (!isNaN(hue)) { this.colour_ = Blockly.hueToRgb(hue); } else if (goog.isString(colour) && colour.match(/^#[0-9a-fA-F]{6}$/)) { diff --git a/core/contextmenu.js b/core/contextmenu.js index 1ec302d05..e2c476937 100644 --- a/core/contextmenu.js +++ b/core/contextmenu.js @@ -82,7 +82,8 @@ Blockly.ContextMenu.show = function(e, options, rtl) { var menuDom = menu.getElement(); Blockly.addClass_(menuDom, 'blocklyContextMenu'); // Prevent system context menu when right-clicking a Blockly context menu. - Blockly.bindEventWithChecks_(menuDom, 'contextmenu', null, Blockly.noEvent); + Blockly.bindEventWithChecks_(menuDom, 'contextmenu', null, + Blockly.utils.noEvent); // Record menuSize after adding menu. var menuSize = goog.style.getSize(menuDom); diff --git a/core/field.js b/core/field.js index 4d6c0a43b..d878ad506 100644 --- a/core/field.js +++ b/core/field.js @@ -45,7 +45,7 @@ goog.require('goog.userAgent'); * @constructor */ Blockly.Field = function(text, opt_validator) { - this.size_ = new goog.math.Size(0, 25); + this.size_ = new goog.math.Size(0, Blockly.BlockSvg.MIN_BLOCK_Y); this.setValue(text); this.setValidator(opt_validator); }; diff --git a/core/utils.js b/core/utils.js index 8d87cdc4d..124ea1a6a 100644 --- a/core/utils.js +++ b/core/utils.js @@ -219,7 +219,7 @@ Blockly.unbindEvent_ = function(bindData) { * Don't do anything for this event, just halt propagation. * @param {!Event} e An event. */ -Blockly.noEvent = function(e) { +Blockly.utils.noEvent = function(e) { // This event has been handled. No need to bubble up to the document. e.preventDefault(); e.stopPropagation(); @@ -561,7 +561,7 @@ Blockly.genUid.soup_ = '!#$%()*+,-./:;=?@[]^_`{|}~' + Blockly.utils.wrap = function(text, limit) { var lines = text.split('\n'); for (var i = 0; i < lines.length; i++) { - lines[i] = Blockly.utils.wrap_line_(lines[i], limit); + lines[i] = Blockly.utils.wrapLine_(lines[i], limit); } return lines.join('\n'); }; @@ -573,7 +573,7 @@ Blockly.utils.wrap = function(text, limit) { * @return {string} Wrapped text. * @private */ -Blockly.utils.wrap_line_ = function(text, limit) { +Blockly.utils.wrapLine_ = function(text, limit) { if (text.length <= limit) { // Short text, no need to wrap. return text; diff --git a/demos/blockfactory/app_controller.js b/demos/blockfactory/app_controller.js index b556b4f8d..baf106ac7 100644 --- a/demos/blockfactory/app_controller.js +++ b/demos/blockfactory/app_controller.js @@ -616,18 +616,20 @@ AppController.prototype.onresize = function(event) { }; /** - * Handler for the window's 'onbeforeunload' event. When a user has unsaved + * Handler for the window's 'beforeunload' event. When a user has unsaved * changes and refreshes or leaves the page, confirm that they want to do so * before actually refreshing. + * @param {!Event} e beforeunload event. */ -AppController.prototype.confirmLeavePage = function() { +AppController.prototype.confirmLeavePage = function(e) { if ((!BlockFactory.isStarterBlock() && - !FactoryUtils.savedBlockChanges(this.blockLibraryController)) || - this.workspaceFactoryController.hasUnsavedChanges()) { - // When a string is assigned to the returnValue Event property, a dialog box - // appears, asking the users for confirmation to leave the page. - return 'You will lose any unsaved changes. Are you sure you want ' + - 'to exit this page?'; + !FactoryUtils.savedBlockChanges(blocklyFactory.blockLibraryController)) || + blocklyFactory.workspaceFactoryController.hasUnsavedChanges()) { + + var confirmationMessage = 'You will lose any unsaved changes. ' + + 'Are you sure you want to exit this page?'; + e.returnValue = confirmationMessage; + return confirmationMessage; } }; diff --git a/demos/blockfactory/blocks.js b/demos/blockfactory/blocks.js index 856780a52..78e351fcd 100644 --- a/demos/blockfactory/blocks.js +++ b/demos/blockfactory/blocks.js @@ -47,7 +47,7 @@ Blockly.Blocks['factory_base'] = { ['↓ bottom connection', 'BOTTOM']], function(option) { this.sourceBlock_.updateShape_(option); - // Connect a shadow block to this new input. + // Connect a shadow block to this new input. this.sourceBlock_.spawnOutputShadow_(option); }); this.appendDummyInput() diff --git a/demos/blockfactory/devtools.png b/demos/blockfactory/devtools.png deleted file mode 100644 index b38a8894b368b579c25b5c7daf6a8c9ab65eb52c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13114 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 diff --git a/demos/blockfactory/icon.png b/demos/blockfactory/icon.png index d4d19b45768cf9740aec1d68b9ad9b21bb87fb6d..2fcb25ed7fb5639cf6046929037d394f5c059f7e 100644 GIT binary patch literal 11824 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 bqc!|L=)%q)#`xT400000NkvXXu0mjf5AcET diff --git a/demos/blockfactory/index.html b/demos/blockfactory/index.html index 6dfea2e17..4a4423a82 100644 --- a/demos/blockfactory/index.html +++ b/demos/blockfactory/index.html @@ -1,5 +1,3 @@ - - @@ -37,11 +35,12 @@ var init = function() { blocklyFactory = new AppController(); blocklyFactory.init(); + window.addEventListener('beforeunload', blocklyFactory.confirmLeavePage); }; window.addEventListener('load', init); - +

Blockly > Demos > Blockly Developer Tools