From 38c81146a33c56f1637c439219915ed4fdf4b332 Mon Sep 17 00:00:00 2001 From: Vladimirs Katusenoks Date: Mon, 19 Sep 2016 11:39:33 +0200 Subject: [PATCH] fix(context-pad): use current context shape Relates to camunda/camunda-modeler#415 --- .../context-pad/ContextPadProvider.js | 11 +++++--- .../context-pad/ContextPadProviderSpec.js | 25 +++++++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/lib/features/context-pad/ContextPadProvider.js b/lib/features/context-pad/ContextPadProvider.js index 85ae4d34..e9559a0d 100644 --- a/lib/features/context-pad/ContextPadProvider.js +++ b/lib/features/context-pad/ContextPadProvider.js @@ -34,10 +34,15 @@ function ContextPadProvider(eventBus, contextPad, modeling, elementFactory, eventBus.on('create.end', 250, function(event) { - var shape = event.shape, - entries = contextPad.getEntries(shape); + var shape = event.context.shape; - if (hasPrimaryModifier(event) && entries.replace) { + if (!hasPrimaryModifier(event)) { + return; + } + + var entries = contextPad.getEntries(shape); + + if (entries.replace) { entries.replace.action.click(event, shape); } }); diff --git a/test/spec/features/context-pad/ContextPadProviderSpec.js b/test/spec/features/context-pad/ContextPadProviderSpec.js index 89420c2b..84c51df9 100644 --- a/test/spec/features/context-pad/ContextPadProviderSpec.js +++ b/test/spec/features/context-pad/ContextPadProviderSpec.js @@ -383,6 +383,31 @@ describe('features - context-pad', function() { })); + it('should open boundary event replace menu after an element is created if it has modifier key', + inject(function(create, dragging, canvas, elementFactory, modeling, popupMenu) { + // given + var rootShape = canvas.getRootElement(); + var task = elementFactory.createShape({ type: 'bpmn:Task' }); + var intermediateEvent = elementFactory.createShape({ type: 'bpmn:IntermediateThrowEvent' }); + + modeling.createShape(task, { x: 100, y: 100 }, rootShape); + + // when + create.start(canvasEvent({ x: 0, y: 0 }), intermediateEvent); + + dragging.move(canvasEvent({ x: 50, y: 50 })); + dragging.hover({ element: task }); + dragging.move(canvasEvent({ x: 50, y: 65 })); + + dragging.end(canvasEvent({ x: 50, y: 65 }, { ctrlKey: true, metaKey: true })); + + // then + var replaceMenu = domQuery.all('[data-id$="-boundary"]', popupMenu._current.container); + expect(replaceMenu).to.exist; + expect(replaceMenu.length).to.eql(13); + })); + + it('should not open the replace menu after an element is created when there is none', inject(function(create, dragging, canvas, elementFactory) { // given