diff options
| author | Jens Mönig <jens@moenig.org> | 2015-03-23 12:44:46 +0100 |
|---|---|---|
| committer | Jens Mönig <jens@moenig.org> | 2015-03-23 12:44:46 +0100 |
| commit | af9b3dec293c45ac4b109f4ef3c21ba2f5bc55c3 (patch) | |
| tree | 4fbdc970ba7fd2f9ba43b83cc7b8ffce4e8bea27 /blocks.js | |
| parent | 4acf1896bd9fa57d3dbe3f4721b6790c6f3b0d56 (diff) | |
| download | snap-af9b3dec293c45ac4b109f4ef3c21ba2f5bc55c3.tar.gz snap-af9b3dec293c45ac4b109f4ef3c21ba2f5bc55c3.zip | |
OOP: Tweaks for scope conflicts when adding / removing vars
Diffstat (limited to 'blocks.js')
| -rw-r--r-- | blocks.js | 29 |
1 files changed, 27 insertions, 2 deletions
@@ -155,7 +155,7 @@ DialogBoxMorph, BlockInputFragmentMorph, PrototypeHatBlockMorph, Costume*/ // Global stuff //////////////////////////////////////////////////////// -modules.blocks = '2015-March-21'; +modules.blocks = '2015-March-23'; var SyntaxElementMorph; @@ -1191,6 +1191,15 @@ SyntaxElementMorph.prototype.labelPart = function (spec) { ); part.isStatic = true; break; + case '%shd': + part = new InputSlotMorph( + null, + false, + 'shadowedVariablesMenu', + true + ); + part.isStatic = true; + break; case '%lst': part = new InputSlotMorph( null, @@ -1889,7 +1898,8 @@ SyntaxElementMorph.prototype.endLayout = function () { %att - chameleon colored rectangular drop-down for attributes %fun - chameleon colored rectangular drop-down for math functions %typ - chameleon colored rectangular drop-down for data types - %var - chameleon colored rectangular drop-down for variable names + %var - chameleon colored rectangular drop-down for variable names + %shd - Chameleon colored rectuangular drop-down for shadowed var names %lst - chameleon colored rectangular drop-down for list names %b - chameleon colored hexagonal slot (for predicates) %l - list icon @@ -6902,6 +6912,21 @@ InputSlotMorph.prototype.getVarNamesDict = function () { return {}; }; +InputSlotMorph.prototype.shadowedVariablesMenu = function () { + var block = this.parentThatIsA(BlockMorph), + rcvr, + dict = {}; + + if (!block) {return dict; } + rcvr = block.receiver(); + if (rcvr) { + rcvr.inheritedVariableNames(true).forEach(function (name) { + dict[name] = name; + }); + } + return dict; +}; + InputSlotMorph.prototype.setChoices = function (dict, readonly) { // externally specify choices and read-only status, // used for custom blocks |
