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);
+ }));
+
});
});