From f94360f805a6dad41ac789a55effb10504441794 Mon Sep 17 00:00:00 2001 From: jmoenig Date: Fri, 8 Oct 2021 09:28:47 +0200 Subject: [PATCH] tweaked variable block visibility --- HISTORY.md | 3 +++ snap.html | 2 +- src/objects.js | 32 +++++++++++++++++++------------- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 25db17c2..5ac19b4c 100755 --- a/HISTORY.md +++ b/HISTORY.md @@ -38,6 +38,9 @@ * German * Chinese, thanks, Simon! +### 2021-10-08 +* objects: tweaked variable block visibility + ### 2021-10-07 * objects, byob: new BlockVisibilityDialogMorph for bulk-selecting blocks to hide / show in the palette * ojects: simplified palette context menu diff --git a/snap.html b/snap.html index f847dd46..45d89803 100755 --- a/snap.html +++ b/snap.html @@ -18,7 +18,7 @@ - + diff --git a/src/objects.js b/src/objects.js index 7b50a10a..a361e41e 100644 --- a/src/objects.js +++ b/src/objects.js @@ -87,7 +87,7 @@ BlockVisibilityDialogMorph*/ /*jshint esversion: 6*/ -modules.objects = '2021-October-07'; +modules.objects = '2021-October-08'; var SpriteMorph; var StageMorph; @@ -2684,7 +2684,7 @@ SpriteMorph.prototype.blockTemplates = function ( } blocks.push('-'); - varNames = this.reachableGlobalVariableNames(true); + varNames = this.reachableGlobalVariableNames(true, all); if (varNames.length > 0) { varNames.forEach(name => { blocks.push(variableWatcherToggle(name)); @@ -2693,7 +2693,7 @@ SpriteMorph.prototype.blockTemplates = function ( blocks.push('-'); } - varNames = this.allLocalVariableNames(true); + varNames = this.allLocalVariableNames(true, all); if (varNames.length > 0) { varNames.forEach(name => { blocks.push(variableWatcherToggle(name)); @@ -3170,7 +3170,9 @@ SpriteMorph.prototype.isHidingBlock = function (aBlock) { ).isHelper; } if (aBlock.selector === 'reportGetVar') { - return this.variables.find(name).vars[aBlock.blockSpec].isHidden; + return this.variables.find( + aBlock.blockSpec + ).vars[aBlock.blockSpec].isHidden; } return StageMorph.prototype.hiddenPrimitives[aBlock.selector] === true; }; @@ -3182,7 +3184,9 @@ SpriteMorph.prototype.changeBlockVisibility = function (aBlock, hideIt, quick) { : this.getLocalMethod(aBlock.semanticSpec) ).isHelper = !!hideIt; } else if (aBlock.selector === 'reportGetVar') { - this.variables.find(name).vars[name].isHidden = !!hideIt; + this.variables.find( + aBlock.blockSpec + ).vars[aBlock.blockSpec].isHidden = !!hideIt; } else { if (hideIt) { StageMorph.prototype.hiddenPrimitives[aBlock.selector] = true; @@ -7152,16 +7156,17 @@ SpriteMorph.prototype.hasSpriteVariable = function (varName) { return contains(this.variables.names(), varName); }; -SpriteMorph.prototype.allLocalVariableNames = function (sorted) { +SpriteMorph.prototype.allLocalVariableNames = function (sorted, all) { + // "all" includes hidden ones in the palette var exceptGlobals = this.globalVariables(), - globalNames = exceptGlobals.names(), + globalNames = exceptGlobals.names(all), data; function alphabetically(x, y) { return x.toLowerCase() < y.toLowerCase() ? -1 : 1; } - data = this.variables.allNames(exceptGlobals).filter(each => + data = this.variables.allNames(exceptGlobals, all).filter(each => !contains(globalNames, each) ); if (sorted) { @@ -7170,15 +7175,16 @@ SpriteMorph.prototype.allLocalVariableNames = function (sorted) { return data; }; -SpriteMorph.prototype.reachableGlobalVariableNames = function (sorted) { - var locals = this.allLocalVariableNames(), +SpriteMorph.prototype.reachableGlobalVariableNames = function (sorted, all) { + // "all" includes hidden ones in the palette + var locals = this.allLocalVariableNames(null, all), data; function alphabetically(x, y) { return x.toLowerCase() < y.toLowerCase() ? -1 : 1; } - data = this.globalVariables().names().filter(each => + data = this.globalVariables().names(all).filter(each => !contains(locals, each) ); if (sorted) { @@ -8907,7 +8913,7 @@ StageMorph.prototype.blockTemplates = function ( } blocks.push('-'); - varNames = this.reachableGlobalVariableNames(true); + varNames = this.reachableGlobalVariableNames(true, all); if (varNames.length > 0) { varNames.forEach(name => { blocks.push(variableWatcherToggle(name)); @@ -8916,7 +8922,7 @@ StageMorph.prototype.blockTemplates = function ( blocks.push('-'); } - varNames = this.allLocalVariableNames(true); + varNames = this.allLocalVariableNames(true, all); if (varNames.length > 0) { varNames.forEach(name => { blocks.push(variableWatcherToggle(name));