diff --git a/src/virtual-machine.js b/src/virtual-machine.js index 98f85b80..935ead9a 100644 --- a/src/virtual-machine.js +++ b/src/virtual-machine.js @@ -921,7 +921,8 @@ class VirtualMachine extends EventEmitter { if (target) { this._dragTarget = null; target.stopDrag(); - this.setEditingTarget(target.id); + this.setEditingTarget(target.sprite && target.sprite.clones[0] ? + target.sprite.clones[0].id : target.id); } } diff --git a/test/unit/virtual-machine.js b/test/unit/virtual-machine.js index ceee87b7..c8cb6596 100644 --- a/test/unit/virtual-machine.js +++ b/test/unit/virtual-machine.js @@ -379,3 +379,30 @@ test('drag IO redirect', t => { t.equal(sprite2Info[1], 'sprite2 info 2'); t.end(); }); + +test('select original after dragging clone', t => { + const vm = new VirtualMachine(); + let newEditingTargetId = null; + vm.setEditingTarget = id => { + newEditingTargetId = id; + }; + vm.runtime.targets = [ + { + id: 'sprite1_clone', + sprite: {clones: [{id: 'sprite1_original'}]}, + stopDrag: () => {} + }, { + id: 'sprite2', + stopDrag: () => {} + } + ]; + + // Stop drag on a bare target selects that target + vm.stopDrag('sprite2'); + t.equal(newEditingTargetId, 'sprite2'); + + // Stop drag on target with parent sprite selects the 0th clone of that sprite + vm.stopDrag('sprite1_clone'); + t.equal(newEditingTargetId, 'sprite1_original'); + t.end(); +});