mirror of
https://github.com/scratchfoundation/scratch-vm.git
synced 2025-07-17 09:42:39 -04:00
Fix some clones not getting removed when sprite is deleted
This commit is contained in:
parent
f5ce73ae51
commit
6d98defdee
1 changed files with 7 additions and 4 deletions
|
@ -1020,10 +1020,13 @@ class VirtualMachine extends EventEmitter {
|
||||||
// target-specific monitored blocks (e.g. local variables)
|
// target-specific monitored blocks (e.g. local variables)
|
||||||
target.deleteMonitors();
|
target.deleteMonitors();
|
||||||
const currentEditingTarget = this.editingTarget;
|
const currentEditingTarget = this.editingTarget;
|
||||||
for (let i = 0; i < sprite.clones.length; i++) {
|
const cloneCount = sprite.clones.length;
|
||||||
const clone = sprite.clones[i];
|
for (let i = 0; i < cloneCount; i++) {
|
||||||
this.runtime.stopForTarget(sprite.clones[i]);
|
// sprite.clones is shifted by sprite.removeClone called from runtime.disposeTarget,
|
||||||
this.runtime.disposeTarget(sprite.clones[i]);
|
// so it's safe to just handle the first element
|
||||||
|
const clone = sprite.clones[0];
|
||||||
|
this.runtime.stopForTarget(clone);
|
||||||
|
this.runtime.disposeTarget(clone);
|
||||||
// Ensure editing target is switched if we are deleting it.
|
// Ensure editing target is switched if we are deleting it.
|
||||||
if (clone === currentEditingTarget) {
|
if (clone === currentEditingTarget) {
|
||||||
const nextTargetIndex = Math.min(this.runtime.targets.length - 1, targetIndexBeforeDelete);
|
const nextTargetIndex = Math.min(this.runtime.targets.length - 1, targetIndexBeforeDelete);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue