avoid circular inheritance when using blocks to set sprites' parents

pull/89/head
jmoenig 2019-12-18 23:28:06 +01:00
rodzic bddfc1dc95
commit 735a0551b1
3 zmienionych plików z 11 dodań i 3 usunięć

Wyświetl plik

@ -12,6 +12,7 @@
* when creating a costume from pen trails (raster or vector) make its rotation center the position of the sprite
* **Notable Fixes:**
* support null-serialization in list-csv conversions
* avoid circular inheritance when using blocks to set sprites' parents
* **Translation Updates:**
* NEW Slovak translation, thanks, Peter Lukacovic
* German
@ -19,6 +20,7 @@
### 2019-12-18
* gui, api: rearranged Snap! API into its own file
* added API documentation
* threads: avoid circular inheritance when using blocks to set sprites' parents
### 2019-12-16
* gui, objects: added ability to add general message listeners for "any" message

Wyświetl plik

@ -7,7 +7,7 @@
<script type="text/javascript" src="src/morphic.js?version=2019-11-12"></script>
<script type="text/javascript" src="src/widgets.js?version=2019-10-16"></script>
<script type="text/javascript" src="src/blocks.js?version=2019-12-13"></script>
<script type="text/javascript" src="src/threads.js?version=2019-12-15"></script>
<script type="text/javascript" src="src/threads.js?version=2019-12-18"></script>
<script type="text/javascript" src="src/objects.js?version=2019-12-16"></script>
<script type="text/javascript" src="src/gui.js?version=2019-12-18"></script>
<script type="text/javascript" src="src/paint.js?version=2019-06-27"></script>

Wyświetl plik

@ -61,7 +61,7 @@ StageMorph, SpriteMorph, StagePrompterMorph, Note, modules, isString, copy,
isNil, WatcherMorph, List, ListWatcherMorph, alert, console, TableMorph, Color,
TableFrameMorph, ColorSlotMorph, isSnapObject, newCanvas, Symbol, SVG_Costume*/
modules.threads = '2019-December-16';
modules.threads = '2019-December-18';
var ThreadManager;
var Process;
@ -4554,7 +4554,13 @@ Process.prototype.doSet = function (attribute, value) {
case 'parent':
this.assertType(rcvr, 'sprite');
value = value instanceof SpriteMorph ? value : null;
// needed: circularity avoidance
// avoid circularity
if (value instanceof SpriteMorph &&
contains(value.allExemplars(), rcvr)) {
throw new Error(
localize('unable to inherit\n(disabled or circular?)')
);
}
rcvr.setExemplar(value);
break;
case 'temporary?':