diff --git a/lib/features/modeling/behavior/SubProcessPlaneBehavior.js b/lib/features/modeling/behavior/SubProcessPlaneBehavior.js index 8bc0333708..d0bbb9261f 100644 --- a/lib/features/modeling/behavior/SubProcessPlaneBehavior.js +++ b/lib/features/modeling/behavior/SubProcessPlaneBehavior.js @@ -107,17 +107,23 @@ export default function SubProcessPlaneBehavior( }, true); - this.postExecuted('shape.create', function(context) { - var shape = context.shape, - rootElement = context.newRootElement; + this.postExecuted('elements.create', function(context) { - if (!rootElement || !shape.children) { - return; - } + var elements = context.elements; + + elements.forEach(function(element) { - self._showRecursively(shape.children); + var rootElement = elementRegistry.get(getPlaneIdFromShape(element)); - self._moveChildrenToShape(shape, rootElement); + if (!isCollapsedSubProcess(element)) { + return; + } + + self._showRecursively(element.children); + + self._moveChildrenToShape(element, rootElement); + + }); }, true); diff --git a/test/spec/features/copy-paste/BpmnCopyPasteSpec.js b/test/spec/features/copy-paste/BpmnCopyPasteSpec.js index a7ce259e1c..7a816606ac 100644 --- a/test/spec/features/copy-paste/BpmnCopyPasteSpec.js +++ b/test/spec/features/copy-paste/BpmnCopyPasteSpec.js @@ -922,6 +922,8 @@ describe('features/copy-paste', function() { } )); + it('integration', integrationTest('SUB_PROCESS')); + }); diff --git a/test/spec/features/modeling/behavior/SubProcessBehavior.copy-paste.bpmn b/test/spec/features/modeling/behavior/SubProcessBehavior.copy-paste.bpmn index 45cdbce723..3f2062c81b 100644 --- a/test/spec/features/modeling/behavior/SubProcessBehavior.copy-paste.bpmn +++ b/test/spec/features/modeling/behavior/SubProcessBehavior.copy-paste.bpmn @@ -141,20 +141,20 @@ - + - + - + - + @@ -162,57 +162,57 @@ - + - + - + - + - + - + - + - + - + - + \ No newline at end of file diff --git a/test/spec/features/modeling/behavior/SubProcessPlaneBehaviorSpec.js b/test/spec/features/modeling/behavior/SubProcessPlaneBehaviorSpec.js index 88f7fa39cf..105220faaf 100644 --- a/test/spec/features/modeling/behavior/SubProcessPlaneBehaviorSpec.js +++ b/test/spec/features/modeling/behavior/SubProcessPlaneBehaviorSpec.js @@ -537,6 +537,31 @@ describe('features/modeling/behavior - subprocess planes', function() { } )); + + it('should undo pasted collapsed subprocess', inject(function(copyPaste, elementRegistry, canvas, commandStack) { + + // given + var subprocess = elementRegistry.get('SubProcess_3'); + var rootElement = canvas.getRootElement(); + var childrenCount = rootElement.children.length; + + // when + copyPaste.copy([ subprocess ]); + + copyPaste.paste({ + element: rootElement, + point: { + x: 300, + y: 300 + } + }); + + commandStack.undo(); + + // then + expect(rootElement.children.length).to.equal(childrenCount); + })); + }); });