kopia lustrzana https://github.com/backface/turtlestitch
Prevent local custom blocks in global custom block definitions
fixes #167 for future projectspull/3/merge
rodzic
e9afcc9ec3
commit
daff84a97a
32
byob.js
32
byob.js
|
@ -105,7 +105,7 @@ CommentMorph, localize, CSlotMorph, SpeechBubbleMorph, MorphicPreferences*/
|
||||||
|
|
||||||
// Global stuff ////////////////////////////////////////////////////////
|
// Global stuff ////////////////////////////////////////////////////////
|
||||||
|
|
||||||
modules.byob = '2013-July-04';
|
modules.byob = '2013-September-18';
|
||||||
|
|
||||||
// Declarations
|
// Declarations
|
||||||
|
|
||||||
|
@ -1602,10 +1602,35 @@ BlockEditorMorph.prototype.cancel = function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
BlockEditorMorph.prototype.close = function () {
|
BlockEditorMorph.prototype.close = function () {
|
||||||
// allow me to disappear only when name collisions
|
|
||||||
// have been resolved
|
|
||||||
var doubles, block,
|
var doubles, block,
|
||||||
myself = this;
|
myself = this;
|
||||||
|
|
||||||
|
// assert that no scope conflicts exists, i.e. that a global
|
||||||
|
// definition doesn't contain any local custom blocks, as they
|
||||||
|
// will be rendered "Obsolete!" when reloading the project
|
||||||
|
if (this.definition.isGlobal) {
|
||||||
|
block = detect(
|
||||||
|
this.body.contents.allChildren(),
|
||||||
|
function (morph) {
|
||||||
|
return morph.definition && !morph.definition.isGlobal;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (block) {
|
||||||
|
block = block.definition.blockInstance();
|
||||||
|
block.addShadow();
|
||||||
|
new DialogBoxMorph().inform(
|
||||||
|
'Local Block(s) in Global Definition',
|
||||||
|
'This global block definition contains one or more\n'
|
||||||
|
+ 'local custom blocks which must be removed first.',
|
||||||
|
myself.world(),
|
||||||
|
block.fullImage()
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// allow me to disappear only when name collisions
|
||||||
|
// have been resolved
|
||||||
doubles = this.target.doubleDefinitionsFor(this.definition);
|
doubles = this.target.doubleDefinitionsFor(this.definition);
|
||||||
if (doubles.length > 0) {
|
if (doubles.length > 0) {
|
||||||
block = doubles[0].blockInstance();
|
block = doubles[0].blockInstance();
|
||||||
|
@ -1619,6 +1644,7 @@ BlockEditorMorph.prototype.close = function () {
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.destroy();
|
this.destroy();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1916,3 +1916,4 @@ ______
|
||||||
130918
|
130918
|
||||||
------
|
------
|
||||||
* Objects, GUI: prevent costumes with CORS-tainted canvases, expected to fix #155, #154, #151, #148, #147, #127 for future projects
|
* Objects, GUI: prevent costumes with CORS-tainted canvases, expected to fix #155, #154, #151, #148, #147, #127 for future projects
|
||||||
|
* BYOB: Prevent local custom blocks in global custom block definitions, fixes #167 for future projects
|
||||||
|
|
Ładowanie…
Reference in New Issue