diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d7d9c41..63e2ee3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ ___Note:__ Yet to be released changes appear here._ * `FEAT`: add horizontal and vertical resize handles * `FEAT`: improve connection cropping (bump to `path-intersection@2`) * `FIX`: correctly mark elements as changed on `{shape|connection}.create` undo +* `FIX`: do not open replace menu after multi create ([#1255](https://github.com/bpmn-io/bpmn-js/pull/1255)) * `CHORE`: update to `diagram-js@6.2.0` ## 6.0.7 diff --git a/lib/features/context-pad/ContextPadProvider.js b/lib/features/context-pad/ContextPadProvider.js index db6b276b..97a4b157 100644 --- a/lib/features/context-pad/ContextPadProvider.js +++ b/lib/features/context-pad/ContextPadProvider.js @@ -56,9 +56,10 @@ export default function ContextPadProvider( } eventBus.on('create.end', 250, function(event) { - var shape = event.context.shape; + var context = event.context, + shape = context.shape; - if (!hasPrimaryModifier(event)) { + if (!hasPrimaryModifier(event) || !contextPad.isOpen(shape)) { return; } @@ -423,6 +424,9 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) { return actions; }; + +// helpers ///////// + function isEventType(eventBo, type, definition) { var isType = eventBo.$instanceOf(type); @@ -436,4 +440,4 @@ function isEventType(eventBo, type, definition) { }); return isType && isDefinition; -} +} \ No newline at end of file diff --git a/test/spec/features/context-pad/ContextPadProviderSpec.js b/test/spec/features/context-pad/ContextPadProviderSpec.js index 96c99e1a..25212549 100644 --- a/test/spec/features/context-pad/ContextPadProviderSpec.js +++ b/test/spec/features/context-pad/ContextPadProviderSpec.js @@ -498,6 +498,31 @@ describe('features - context-pad', function() { } )); + + it('should NOT open replace menu if context pad NOT open', inject( + function(canvas, create, dragging, elementFactory) { + + // given + var rootShape = canvas.getRootElement(), + startEvent = elementFactory.createShape({ type: 'bpmn:StartEvent' }), + task = elementFactory.createShape({ type: 'bpmn:Task' }); + + // when + create.start(canvasEvent({ x: 0, y: 0 }), [ startEvent, task ]); + + dragging.move(canvasEvent({ x: 50, y: 50 })); + dragging.hover({ element: rootShape }); + dragging.move(canvasEvent({ x: 75, y: 75 })); + + dragging.end(canvasEvent({ x: 75, y: 75 }, { ctrlKey: true, metaKey: true })); + + // then + var replaceMenu = domQuery('.bpmn-replace', container); + + expect(replaceMenu).not.to.exist; + } + )); + }); });