diff --git a/src/app/index.ts b/src/app/index.ts
index b0e6305a24f806a73d29d241ba15d906616580b0..b8f949fdd850b0fd510cd6b23f16db9d19828414 100644
--- a/src/app/index.ts
+++ b/src/app/index.ts
@@ -275,6 +275,7 @@ async function setupImage() {
             layerGroup: layerGroupsArray['sketch'],
             image: {},
             rotateWithLine: false,
+            triggerImmediateEndDraw: true
         });
         generator.once('startGenerator', _startGenerator, this);
         generator.once('endGenerator', generator.endGenerator, generator);
@@ -1414,7 +1415,7 @@ buttonTest.addEventListener("click", () => {
     console.log("sketch", layerGroupsArray['sketch']);
     image.externControlSelectLayerGroup(layerGroupsArray['sketch']);
     */
-    elementsArray['text'].modeInteraction.setMode('delete');
+    // elementsArray['text'].modeInteraction.setMode('delete');
 
     // Position point
     /** /
@@ -1443,7 +1444,7 @@ buttonTest.addEventListener("click", () => {
                         // bezierCourve: false,
                         stickMode: MedsurfDraw.StickMode.POSITIONPOINTS,
                         // startElement: test17Point,
-                        layerGroup: layerGroupModel1,
+                        layerGroup: layerGroupsArray['layerGroupModel1'],
                         image: {}
                     });
      /**/
@@ -1500,7 +1501,7 @@ buttonTest.addEventListener("click", () => {
     });
     /**/
     // Fill collection
-    /**/
+    /** /
     const generator = new MedsurfDraw.FillGenerator({
         target: image,
         bezierCourve: false,
@@ -1511,12 +1512,12 @@ buttonTest.addEventListener("click", () => {
     });
     /**/
     // Marker
-    /** /
+    /**/
      const generator = new MedsurfDraw.MarkerGenerator({
-                        target: image,
-                        layerGroup: sketch,
-                        image: {}
-                    });
+            target: image,
+            layerGroup: layerGroupsArray['sketch'],
+            image: {}
+        });
      /**/
     // Primitive Marker
     /** /
diff --git a/src/lib/elements/connections/Line.ts b/src/lib/elements/connections/Line.ts
index d2fb7eea3be5fb92462f7638a3f3822c917f9293..893ddb8cdf688e31779998bc051d76cd4b704fb3 100644
--- a/src/lib/elements/connections/Line.ts
+++ b/src/lib/elements/connections/Line.ts
@@ -1527,7 +1527,7 @@ export class Line extends BaseElementContainer<Models.Line, BaseElementContainer
 
         if (image) {
             // Select layer group
-            if (this.modeInteraction.lastMode !== 'delete_multiple') {
+            if (['delete_multiple', 'delete_draw', 'delete_clone'].indexOf(this.modeInteraction.lastMode) === -1) {
                 this.controlUnselectItem(image);
             }
 
diff --git a/src/lib/elements/fills/FillCollection.ts b/src/lib/elements/fills/FillCollection.ts
index a2fb9889c6134d9b5cacb457895ca8be0fe8afbd..9cc65883fd073151762c68e325a4da9a4641a329 100644
--- a/src/lib/elements/fills/FillCollection.ts
+++ b/src/lib/elements/fills/FillCollection.ts
@@ -1296,7 +1296,7 @@ export class FillCollection extends BaseElementContainer<Models.FillCollection,
 
         if (image) {
             // Select layer group
-            if (this.modeInteraction.lastMode !== 'delete_multiple') {
+            if (['delete_multiple', 'delete_draw', 'delete_clone'].indexOf(this.modeInteraction.lastMode) === -1) {
                 this.controlUnselectItem(image);
             }
 
diff --git a/src/lib/elements/legends/LegendCollection.ts b/src/lib/elements/legends/LegendCollection.ts
index 089c5c6c121560f0b220dc5cc34f81ed4ca89033..6f08ed3b4276a658585d166e6bb456751548c977 100644
--- a/src/lib/elements/legends/LegendCollection.ts
+++ b/src/lib/elements/legends/LegendCollection.ts
@@ -931,7 +931,7 @@ export class LegendCollection extends BaseElementContainer<Models.LegendCollecti
 
         if (image) {
             // Select layer group
-            if (this.modeInteraction.lastMode !== 'delete_multiple') {
+            if (['delete_multiple', 'delete_draw', 'delete_clone'].indexOf(this.modeInteraction.lastMode) === -1) {
                 this.controlUnselectItem(image);
             }
 
diff --git a/src/lib/elements/positionings/PositionPoint.ts b/src/lib/elements/positionings/PositionPoint.ts
index bcc1fa9837904e53fb2860b97cfc8ec3945eeb08..0b7d27711438ecfa47f4899eaa0b89e173948bae 100644
--- a/src/lib/elements/positionings/PositionPoint.ts
+++ b/src/lib/elements/positionings/PositionPoint.ts
@@ -1070,7 +1070,7 @@ export class PositionPoint extends BaseElementContainer<Models.PositionPoint, Ba
 
         if (image) {
             // Select layer group
-            if (this.modeInteraction.lastMode !== 'delete_multiple') {
+            if (['delete_multiple', 'delete_draw', 'delete_clone'].indexOf(this.modeInteraction.lastMode) === -1) {
                 this.controlUnselectItem(image);
             }
 
diff --git a/src/lib/elements/primitives/ArrowPrimitive.ts b/src/lib/elements/primitives/ArrowPrimitive.ts
index 8f51d1c9e9d8067a7b3d82f9609d18dfc2111e6c..639267f3386b401944ca4eaf4338e3a4fcdd4287 100644
--- a/src/lib/elements/primitives/ArrowPrimitive.ts
+++ b/src/lib/elements/primitives/ArrowPrimitive.ts
@@ -992,7 +992,9 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive,
                 let index = parent.model.primitives.findIndex((primitive: any) => primitive === this.model);
                 if (index > -1) {
                     // Select layer group
-                    this.emit("debounceControlUnselectItem", parent);
+                    if (['delete_draw'].indexOf(this.modeInteraction.lastMode) === -1) {
+                        this.emit("debounceControlUnselectItem", parent);
+                    }
 
                     // Delete from parent
                     parent.model.primitives.slice(index, 1);
diff --git a/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts b/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts
index 93b2d7c230d94e92ee04e80959f6fd0bc1639171..cd3e76fd4a257aa1ef1efab1531ac910341c040f 100644
--- a/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts
+++ b/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts
@@ -965,7 +965,9 @@ export class BackgroundRectanglePrimitive extends BaseElementContainer<Models.Ba
                 let index = parent.model.primitives.findIndex((primitive: any) => primitive === this.model);
                 if (index > -1) {
                     // Select layer group
-                    this.emit("debounceControlUnselectItem", parent);
+                    if (['delete_draw'].indexOf(this.modeInteraction.lastMode) === -1) {
+                        this.emit("debounceControlUnselectItem", parent);
+                    }
 
                     // Delete from parent
                     parent.model.primitives.slice(index, 1);
diff --git a/src/lib/elements/primitives/EllipsePrimitive.ts b/src/lib/elements/primitives/EllipsePrimitive.ts
index 6a8d3f64fb22efd9a51ff1b273f58aa4d30c25a2..44da24cc40afe84a3e186adfbe11bbb4bee1c59f 100644
--- a/src/lib/elements/primitives/EllipsePrimitive.ts
+++ b/src/lib/elements/primitives/EllipsePrimitive.ts
@@ -964,7 +964,9 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti
                 let index = parent.model.primitives.findIndex((primitive: any) => primitive === this.model);
                 if (index > -1) {
                     // Select layer group
-                    this.emit("debounceControlUnselectItem", parent);
+                    if (['delete_draw'].indexOf(this.modeInteraction.lastMode) === -1) {
+                        this.emit("debounceControlUnselectItem", parent);
+                    }
 
                     // Delete from parent
                     parent.model.primitives.slice(index, 1);
diff --git a/src/lib/elements/primitives/RectanglePrimitive.ts b/src/lib/elements/primitives/RectanglePrimitive.ts
index 8e5e575a4262b80e36ba3f182433397ef5869cb5..5ee402e921fc7e9c35079064beb4e0cc1fa3c437 100644
--- a/src/lib/elements/primitives/RectanglePrimitive.ts
+++ b/src/lib/elements/primitives/RectanglePrimitive.ts
@@ -965,7 +965,9 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri
                 let index = parent.model.primitives.findIndex((primitive: any) => primitive === this.model);
                 if (index > -1) {
                     // Select layer group
-                    this.emit("debounceControlUnselectItem", parent);
+                    if (['delete_draw'].indexOf(this.modeInteraction.lastMode) === -1) {
+                        this.emit("debounceControlUnselectItem", parent);
+                    }
 
                     // Delete from parent
                     parent.model.primitives.slice(index, 1);
diff --git a/src/lib/elements/primitives/TextPrimitive.ts b/src/lib/elements/primitives/TextPrimitive.ts
index b2aed46a51266389769c08582dabd3772648ed87..717e66d63db1c4020350324c6fad8bf8c599de47 100644
--- a/src/lib/elements/primitives/TextPrimitive.ts
+++ b/src/lib/elements/primitives/TextPrimitive.ts
@@ -1013,7 +1013,9 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba
                 let index = parent.model.primitives.findIndex((primitive: any) => primitive === this.model);
                 if (index > -1) {
                     // Select layer group
-                    this.emit("debounceControlUnselectItem", parent);
+                    if (['delete_draw'].indexOf(this.modeInteraction.lastMode) === -1) {
+                        this.emit("debounceControlUnselectItem", parent);
+                    }
 
                     // Delete from parent
                     parent.model.primitives.slice(index, 1);
diff --git a/src/lib/generators/combinations/ArrowGenerator.ts b/src/lib/generators/combinations/ArrowGenerator.ts
index c8b927c85c4522a210693e13ff120b71f370b7da..b7a8d95296af127872b9f0759fbcb3f5a1b92179 100644
--- a/src/lib/generators/combinations/ArrowGenerator.ts
+++ b/src/lib/generators/combinations/ArrowGenerator.ts
@@ -163,7 +163,8 @@ export class ArrowGenerator extends BaseGenerator<MedsurfDraw.Image, ArrowGenera
                 image: this.data.image,
                 stickMode: MedsurfDraw.StickMode.NOELEMENTS,
                 startElement: positionPoint,
-                rotateWithLine: true
+                rotateWithLine: true,
+                triggerImmediateEndDraw: true
             });
             this._arrowPrimitiveGenerator.once("startGenerator", this.start, this);
             this._arrowPrimitiveGenerator.once("endGenerator", this.endArrowPrimitiveGenerator, this);
@@ -177,7 +178,8 @@ export class ArrowGenerator extends BaseGenerator<MedsurfDraw.Image, ArrowGenera
                 image: this.data.image,
                 stickMode: MedsurfDraw.StickMode.NOELEMENTS,
                 startElement: positionPoint,
-                rotateWithLine: false
+                rotateWithLine: false,
+                triggerImmediateEndDraw: false
             });
             this._textPrimitiveGenerator.once("startGenerator", this.startTextPrimitiveGenerator, this);
             this._textPrimitiveGenerator.once("endGenerator", this.endTextPrimitiveGenerator, this);
diff --git a/src/lib/generators/combinations/EllipseGenerator.ts b/src/lib/generators/combinations/EllipseGenerator.ts
index d0ba74a271c5f828c5bd14e5b8a7e144ded70d6c..d96e215098947e14d17a771defe79ab56519af95 100644
--- a/src/lib/generators/combinations/EllipseGenerator.ts
+++ b/src/lib/generators/combinations/EllipseGenerator.ts
@@ -163,7 +163,8 @@ export class EllipseGenerator extends BaseGenerator<MedsurfDraw.Image, EllipseGe
                 image: this.data.image,
                 stickMode: MedsurfDraw.StickMode.NOELEMENTS,
                 startElement: positionPoint,
-                rotateWithLine: false
+                rotateWithLine: false,
+                triggerImmediateEndDraw: true
             });
             this._ellipsePrimitiveGenerator.once("startGenerator", this.start, this);
             this._ellipsePrimitiveGenerator.once("endGenerator", this.endEllipsePrimitiveGenerator, this);
@@ -177,7 +178,8 @@ export class EllipseGenerator extends BaseGenerator<MedsurfDraw.Image, EllipseGe
                 image: this.data.image,
                 stickMode: MedsurfDraw.StickMode.NOELEMENTS,
                 startElement: positionPoint,
-                rotateWithLine: false
+                rotateWithLine: false,
+                triggerImmediateEndDraw: false
             });
             this._textPrimitiveGenerator.once("startGenerator", this.startTextPrimitiveGenerator, this);
             this._textPrimitiveGenerator.once("endGenerator", this.endTextPrimitiveGenerator, this);
diff --git a/src/lib/generators/combinations/InteractiveAreaGenerator.ts b/src/lib/generators/combinations/InteractiveAreaGenerator.ts
index 1af0550d7caea2c32751ae14f0001dda46cb09af..2180c24a4872b0bcecba7803f739ecf6abdc12ed 100644
--- a/src/lib/generators/combinations/InteractiveAreaGenerator.ts
+++ b/src/lib/generators/combinations/InteractiveAreaGenerator.ts
@@ -175,7 +175,8 @@ export class InteractiveAreaGenerator extends BaseGenerator<MedsurfDraw.Image, I
                 image: this.data.image,
                 stickMode: MedsurfDraw.StickMode.NOELEMENTS,
                 startElement: positionPoint,
-                rotateWithLine: false
+                rotateWithLine: false,
+                triggerImmediateEndDraw: false
             });
             this._textPrimitiveGenerator.once("startGenerator", this.startTextPrimitiveGenerator, this);
             this._textPrimitiveGenerator.once("endGenerator", this.endTextPrimitiveGenerator, this);
diff --git a/src/lib/generators/combinations/MarkerGenerator.ts b/src/lib/generators/combinations/MarkerGenerator.ts
index f142bc0daf01dd0ec9217a97667921ab2f65bf9e..7081d2a7deba9b1db11b96d5908e3adfdb6204ed 100644
--- a/src/lib/generators/combinations/MarkerGenerator.ts
+++ b/src/lib/generators/combinations/MarkerGenerator.ts
@@ -202,7 +202,8 @@ export class MarkerGenerator extends BaseGenerator<MedsurfDraw.Image, MarkerGene
                 image: this.data.image,
                 stickMode: MedsurfDraw.StickMode.NOELEMENTS,
                 startElement: positionPoint,
-                rotateWithLine: false
+                rotateWithLine: false,
+                triggerImmediateEndDraw: false
             });
             this._textPrimitiveGenerator.once("endGenerator", this.endTextPrimitiveGenerator, this);
             this._textPrimitiveGenerator.once("abortGenerator", this.abortTextPrimitiveGenerator, this);
diff --git a/src/lib/generators/combinations/PrimitiveMarkerGenerator.ts b/src/lib/generators/combinations/PrimitiveMarkerGenerator.ts
index aeb1cc0fa283b30e49b65bcd532db06b684f113c..e9e627b4e00e2b94f0c196a5d7276b3ca83acea8 100644
--- a/src/lib/generators/combinations/PrimitiveMarkerGenerator.ts
+++ b/src/lib/generators/combinations/PrimitiveMarkerGenerator.ts
@@ -180,7 +180,8 @@ export class PrimitiveMarkerGenerator extends BaseGenerator<MedsurfDraw.Image, P
                         image: this.data.image,
                         stickMode: MedsurfDraw.StickMode.NOELEMENTS,
                         startElement: positionPoint,
-                        rotateWithLine: this.data.rotateWithLine
+                        rotateWithLine: this.data.rotateWithLine,
+                        triggerImmediateEndDraw: true
                     });
                     break;
                 case Models.ImageObjectType.ELLIPSE:
@@ -190,7 +191,8 @@ export class PrimitiveMarkerGenerator extends BaseGenerator<MedsurfDraw.Image, P
                         image: this.data.image,
                         stickMode: MedsurfDraw.StickMode.NOELEMENTS,
                         startElement: positionPoint,
-                        rotateWithLine: this.data.rotateWithLine
+                        rotateWithLine: this.data.rotateWithLine,
+                        triggerImmediateEndDraw: true
                     });
                     break;
                 case Models.ImageObjectType.RECTANGLE:
@@ -200,7 +202,8 @@ export class PrimitiveMarkerGenerator extends BaseGenerator<MedsurfDraw.Image, P
                         image: this.data.image,
                         stickMode: MedsurfDraw.StickMode.NOELEMENTS,
                         startElement: positionPoint,
-                        rotateWithLine: this.data.rotateWithLine
+                        rotateWithLine: this.data.rotateWithLine,
+                        triggerImmediateEndDraw: true
                     });
                     break;
                 case Models.ImageObjectType.TEXT:
@@ -210,7 +213,8 @@ export class PrimitiveMarkerGenerator extends BaseGenerator<MedsurfDraw.Image, P
                         image: this.data.image,
                         stickMode: MedsurfDraw.StickMode.NOELEMENTS,
                         startElement: positionPoint,
-                        rotateWithLine: this.data.rotateWithLine
+                        rotateWithLine: this.data.rotateWithLine,
+                        triggerImmediateEndDraw: true
                     });
                     break;
                 default:
diff --git a/src/lib/generators/combinations/RectangleGenerator.ts b/src/lib/generators/combinations/RectangleGenerator.ts
index 5e65f08e4ba090fd0e7bcb0bc138ebb64bc48bc2..99be52da15eec677183e0d5bde7b817ae80fb31f 100644
--- a/src/lib/generators/combinations/RectangleGenerator.ts
+++ b/src/lib/generators/combinations/RectangleGenerator.ts
@@ -163,7 +163,8 @@ export class RectangleGenerator extends BaseGenerator<MedsurfDraw.Image, Rectang
                 image: this.data.image,
                 stickMode: MedsurfDraw.StickMode.NOELEMENTS,
                 startElement: positionPoint,
-                rotateWithLine: false
+                rotateWithLine: false,
+                triggerImmediateEndDraw: true
             });
             this._rectanglePrimitiveGenerator.once("startGenerator", this.start, this);
             this._rectanglePrimitiveGenerator.once("endGenerator", this.endRectanglePrimitiveGenerator, this);
@@ -177,7 +178,8 @@ export class RectangleGenerator extends BaseGenerator<MedsurfDraw.Image, Rectang
                 image: this.data.image,
                 stickMode: MedsurfDraw.StickMode.NOELEMENTS,
                 startElement: positionPoint,
-                rotateWithLine: false
+                rotateWithLine: false,
+                triggerImmediateEndDraw: false
             });
             this._textPrimitiveGenerator.once("startGenerator", this.startTextPrimitiveGenerator, this);
             this._textPrimitiveGenerator.once("endGenerator", this.endTextPrimitiveGenerator, this);
diff --git a/src/lib/generators/primitives/ArrowPrimitiveGenerator.ts b/src/lib/generators/primitives/ArrowPrimitiveGenerator.ts
index 6578ed897a6620681a18e19f268c82bf37ae9d46..f07b753246d3b73341dad60972b8cdad98ac0302 100644
--- a/src/lib/generators/primitives/ArrowPrimitiveGenerator.ts
+++ b/src/lib/generators/primitives/ArrowPrimitiveGenerator.ts
@@ -9,6 +9,7 @@ import {PositionPointGeneratorModel} from "../positionings/PositionPointGenerato
 export class ArrowPrimitiveGeneratorModel extends PositionPointGeneratorModel {
     startElement?: MedsurfDraw.PositionPoint;
     rotateWithLine: boolean;
+    triggerImmediateEndDraw: boolean;
 }
 
 /**
@@ -226,20 +227,24 @@ export class ArrowPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Ar
         }
         this.positionPointElement.model.primitives.push(this.arrowPrimitiveElement.model as any);
 
-        //<editor-fold desc="Events">
-        // -- Image
-        this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction);
-        this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction);
-        this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction);
-        this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction);
-        // -- Scale
-        this.drawInteraction.on("startScale", this.arrowPrimitiveElement.scaleInteraction.startScale, this.arrowPrimitiveElement.scaleInteraction);
-        this.drawInteraction.on("onScale", this.arrowPrimitiveElement.scaleInteraction.onScale, this.arrowPrimitiveElement.scaleInteraction);
-        this.drawInteraction.on("endScale", this.arrowPrimitiveElement.scaleInteraction.endScale, this.arrowPrimitiveElement.scaleInteraction);
-        // -- Draw
-        this.drawInteraction.on("endDraw", this.endArrowPrimitiveDraw, this);
-        this.drawInteraction.on("abortDraw", this.abortArrowPrimitiveDraw, this);
-        //</editor-fold>
+        if (this.triggerImmediateEndDraw) {
+            this.endArrowPrimitiveDraw()
+        } else {
+            //<editor-fold desc="Events">
+            // -- Image
+            this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction);
+            this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction);
+            this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction);
+            this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction);
+            // -- Scale
+            this.drawInteraction.on("startScale", this.arrowPrimitiveElement.scaleInteraction.startScale, this.arrowPrimitiveElement.scaleInteraction);
+            this.drawInteraction.on("onScale", this.arrowPrimitiveElement.scaleInteraction.onScale, this.arrowPrimitiveElement.scaleInteraction);
+            this.drawInteraction.on("endScale", this.arrowPrimitiveElement.scaleInteraction.endScale, this.arrowPrimitiveElement.scaleInteraction);
+            // -- Draw
+            this.drawInteraction.on("endDraw", this.endArrowPrimitiveDraw, this);
+            this.drawInteraction.on("abortDraw", this.abortArrowPrimitiveDraw, this);
+            //</editor-fold>
+        }
     }
 
     /**
@@ -252,8 +257,20 @@ export class ArrowPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Ar
         }
         this.positionPointElement.model.primitives.push(this.arrowPrimitiveElement.model as any);
 
-        // End arrow primitive draw
-        this.endArrowPrimitiveDraw();
+        if (this.triggerImmediateEndDraw) {
+            this.endArrowPrimitiveDraw();
+        } else {
+            //<editor-fold desc="Events">
+            // -- Image
+            this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction);
+            this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction);
+            this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction);
+            this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction);
+            // -- Draw
+            this.drawInteraction.on("endDraw", this.endArrowPrimitiveDraw, this);
+            this.drawInteraction.on("abortDraw", this.abortArrowPrimitiveDraw, this);
+            //</editor-fold>
+        }
     }
 
     /**
@@ -369,5 +386,20 @@ export class ArrowPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Ar
     public set rotateWithLine(value: boolean) {
         this.data.rotateWithLine = value;
     }
+
+    /**
+     * Get trigger immediate end draw
+     */
+    public get triggerImmediateEndDraw(): boolean {
+        return this.data.triggerImmediateEndDraw;
+    }
+
+    /**
+     * Set trigger immediate end draw
+     * @param value
+     */
+    public set triggerImmediateEndDraw(value: boolean) {
+        this.data.triggerImmediateEndDraw = value;
+    }
     //</editor-fold>
 }
\ No newline at end of file
diff --git a/src/lib/generators/primitives/EllipsePrimitiveGenerator.ts b/src/lib/generators/primitives/EllipsePrimitiveGenerator.ts
index 55768da2ce6ad6d2f2b9feba71dc4e396f090bfb..9800721a6d4a917db3c06764c8426762179f0267 100644
--- a/src/lib/generators/primitives/EllipsePrimitiveGenerator.ts
+++ b/src/lib/generators/primitives/EllipsePrimitiveGenerator.ts
@@ -9,6 +9,7 @@ import {PositionPointGeneratorModel} from "../positionings/PositionPointGenerato
 export class EllipsePrimitiveGeneratorModel extends PositionPointGeneratorModel {
     startElement?: MedsurfDraw.PositionPoint;
     rotateWithLine: boolean;
+    triggerImmediateEndDraw: boolean;
 }
 
 /**
@@ -226,20 +227,24 @@ export class EllipsePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image,
         }
         this.positionPointElement.model.primitives.push(this.ellipsePrimitiveElement.model as any);
 
-        //<editor-fold desc="Events">
-        // -- Image
-        this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction);
-        this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction);
-        this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction);
-        this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction);
-        // ---- Scale
-        this.drawInteraction.on("startScale", this.ellipsePrimitiveElement.scaleInteraction.startScale, this.ellipsePrimitiveElement.scaleInteraction);
-        this.drawInteraction.on("onScale", this.ellipsePrimitiveElement.scaleInteraction.onScale, this.ellipsePrimitiveElement.scaleInteraction);
-        this.drawInteraction.on("endScale", this.ellipsePrimitiveElement.scaleInteraction.endScale, this.ellipsePrimitiveElement.scaleInteraction);
-        // -- Draw
-        this.drawInteraction.on("endDraw", this.endEllipsePrimitiveDraw, this);
-        this.drawInteraction.on("abortDraw", this.abortEllipsePrimitiveDraw, this);
-        //</editor-fold>
+        if (this.triggerImmediateEndDraw) {
+            this.endEllipsePrimitiveDraw();
+        } else {
+            //<editor-fold desc="Events">
+            // -- Image
+            this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction);
+            this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction);
+            this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction);
+            this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction);
+            // ---- Scale
+            this.drawInteraction.on("startScale", this.ellipsePrimitiveElement.scaleInteraction.startScale, this.ellipsePrimitiveElement.scaleInteraction);
+            this.drawInteraction.on("onScale", this.ellipsePrimitiveElement.scaleInteraction.onScale, this.ellipsePrimitiveElement.scaleInteraction);
+            this.drawInteraction.on("endScale", this.ellipsePrimitiveElement.scaleInteraction.endScale, this.ellipsePrimitiveElement.scaleInteraction);
+            // -- Draw
+            this.drawInteraction.on("endDraw", this.endEllipsePrimitiveDraw, this);
+            this.drawInteraction.on("abortDraw", this.abortEllipsePrimitiveDraw, this);
+            //</editor-fold>
+        }
     }
 
     /**
@@ -252,8 +257,20 @@ export class EllipsePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image,
         }
         this.positionPointElement.model.primitives.push(this.ellipsePrimitiveElement.model as any);
 
-        // End ellipse primitive draw
-        this.endEllipsePrimitiveDraw();
+        if (this.triggerImmediateEndDraw) {
+            this.endEllipsePrimitiveDraw();
+        } else {
+            //<editor-fold desc="Events">
+            // -- Image
+            this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction);
+            this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction);
+            this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction);
+            this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction);
+            // -- Draw
+            this.drawInteraction.on("endDraw", this.endEllipsePrimitiveDraw, this);
+            this.drawInteraction.on("abortDraw", this.abortEllipsePrimitiveDraw, this);
+            //</editor-fold>
+        }
     }
 
     /**
@@ -369,5 +386,20 @@ export class EllipsePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image,
     public set rotateWithLine(value: boolean) {
         this.data.rotateWithLine = value;
     }
+
+    /**
+     * Get trigger immediate end draw
+     */
+    public get triggerImmediateEndDraw(): boolean {
+        return this.data.triggerImmediateEndDraw;
+    }
+
+    /**
+     * Set trigger immediate end draw
+     * @param value
+     */
+    public set triggerImmediateEndDraw(value: boolean) {
+        this.data.triggerImmediateEndDraw = value;
+    }
     //</editor-fold>
 }
\ No newline at end of file
diff --git a/src/lib/generators/primitives/RectanglePrimitiveGenerator.ts b/src/lib/generators/primitives/RectanglePrimitiveGenerator.ts
index df5e22944192395a325f49a2c23d88526665eadf..4312e654c4fdcf9d5034a776234ee9dc9c8fb1da 100644
--- a/src/lib/generators/primitives/RectanglePrimitiveGenerator.ts
+++ b/src/lib/generators/primitives/RectanglePrimitiveGenerator.ts
@@ -9,6 +9,7 @@ import {PositionPointGeneratorModel} from "../positionings/PositionPointGenerato
 export class RectanglePrimitiveGeneratorModel extends PositionPointGeneratorModel {
     startElement?: MedsurfDraw.PositionPoint;
     rotateWithLine: boolean;
+    triggerImmediateEndDraw: boolean;
 }
 
 /**
@@ -225,20 +226,24 @@ export class RectanglePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image
         }
         this.positionPointElement.model.primitives.push(this.rectanglePrimitiveElement.model as any);
 
-        //<editor-fold desc="Events">
-        // -- Image
-        this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction);
-        this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction);
-        this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction);
-        this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction);
-        // ---- Scale
-        this.drawInteraction.on("startScale", this.rectanglePrimitiveElement.scaleInteraction.startScale, this.rectanglePrimitiveElement.scaleInteraction);
-        this.drawInteraction.on("onScale", this.rectanglePrimitiveElement.scaleInteraction.onScale, this.rectanglePrimitiveElement.scaleInteraction);
-        this.drawInteraction.on("endScale", this.rectanglePrimitiveElement.scaleInteraction.endScale, this.rectanglePrimitiveElement.scaleInteraction);
-        // -- Draw
-        this.drawInteraction.on("endDraw", this.endRectanglePrimitiveDraw, this);
-        this.drawInteraction.on("abortDraw", this.abortRectanglePrimitiveDraw, this);
-        //</editor-fold>
+        if (this.triggerImmediateEndDraw) {
+            this.endRectanglePrimitiveDraw();
+        } else {
+            //<editor-fold desc="Events">
+            // -- Image
+            this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction);
+            this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction);
+            this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction);
+            this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction);
+            // ---- Scale
+            this.drawInteraction.on("startScale", this.rectanglePrimitiveElement.scaleInteraction.startScale, this.rectanglePrimitiveElement.scaleInteraction);
+            this.drawInteraction.on("onScale", this.rectanglePrimitiveElement.scaleInteraction.onScale, this.rectanglePrimitiveElement.scaleInteraction);
+            this.drawInteraction.on("endScale", this.rectanglePrimitiveElement.scaleInteraction.endScale, this.rectanglePrimitiveElement.scaleInteraction);
+            // -- Draw
+            this.drawInteraction.on("endDraw", this.endRectanglePrimitiveDraw, this);
+            this.drawInteraction.on("abortDraw", this.abortRectanglePrimitiveDraw, this);
+            //</editor-fold>
+        }
     }
 
     /**
@@ -251,8 +256,20 @@ export class RectanglePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image
         }
         this.positionPointElement.model.primitives.push(this.rectanglePrimitiveElement.model as any);
 
-        // End rectangle primitive draw
-        this.endRectanglePrimitiveDraw();
+        if (this.triggerImmediateEndDraw) {
+            this.endRectanglePrimitiveDraw();
+        } else {
+            //<editor-fold desc="Events">
+            // -- Image
+            this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction);
+            this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction);
+            this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction);
+            this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction);
+            // -- Draw
+            this.drawInteraction.on("endDraw", this.endRectanglePrimitiveDraw, this);
+            this.drawInteraction.on("abortDraw", this.abortRectanglePrimitiveDraw, this);
+            //</editor-fold>
+        }
     }
 
     /**
@@ -368,5 +385,20 @@ export class RectanglePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image
     public set rotateWithLine(value: boolean) {
         this.data.rotateWithLine = value;
     }
+
+    /**
+     * Get trigger immediate end draw
+     */
+    public get triggerImmediateEndDraw(): boolean {
+        return this.data.triggerImmediateEndDraw;
+    }
+
+    /**
+     * Set trigger immediate end draw
+     * @param value
+     */
+    public set triggerImmediateEndDraw(value: boolean) {
+        this.data.triggerImmediateEndDraw = value;
+    }
     //</editor-fold>
 }
\ No newline at end of file
diff --git a/src/lib/generators/primitives/TextPrimitiveGenerator.ts b/src/lib/generators/primitives/TextPrimitiveGenerator.ts
index 721b24d37d62bb723aa10c7fa6959aaf85c93688..d1fcfb940f9c89752051fdb651644aa6e6c7fa9c 100644
--- a/src/lib/generators/primitives/TextPrimitiveGenerator.ts
+++ b/src/lib/generators/primitives/TextPrimitiveGenerator.ts
@@ -9,6 +9,7 @@ import {PositionPointGeneratorModel} from "../positionings/PositionPointGenerato
 export class TextPrimitiveGeneratorModel extends PositionPointGeneratorModel {
     startElement?: MedsurfDraw.PositionPoint;
     rotateWithLine: boolean;
+    triggerImmediateEndDraw: boolean;
 }
 
 /**
@@ -225,20 +226,24 @@ export class TextPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Tex
         }
         this.positionPointElement.model.primitives.push(this.textPrimitiveElement.model as any);
 
-        //<editor-fold desc="Events">
-        // -- Image
-        this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction);
-        this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction);
-        this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction);
-        this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction);
-        // ---- Scale
-        this.drawInteraction.on("startScale", this.textPrimitiveElement.scaleInteraction.startScale, this.textPrimitiveElement.scaleInteraction);
-        this.drawInteraction.on("onScale", this.textPrimitiveElement.scaleInteraction.onScale, this.textPrimitiveElement.scaleInteraction);
-        this.drawInteraction.on("endScale", this.textPrimitiveElement.scaleInteraction.endScale, this.textPrimitiveElement.scaleInteraction);
-        // -- Draw
-        this.drawInteraction.on("endDraw", this.endTextPrimitiveDraw, this);
-        this.drawInteraction.on("abortDraw", this.abortTextPrimitiveDraw, this);
-        //</editor-fold>
+        if (this.triggerImmediateEndDraw) {
+            this.endTextPrimitiveDraw()
+        } else {
+            //<editor-fold desc="Events">
+            // -- Image
+            this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction);
+            this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction);
+            this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction);
+            this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction);
+            // ---- Scale
+            this.drawInteraction.on("startScale", this.textPrimitiveElement.scaleInteraction.startScale, this.textPrimitiveElement.scaleInteraction);
+            this.drawInteraction.on("onScale", this.textPrimitiveElement.scaleInteraction.onScale, this.textPrimitiveElement.scaleInteraction);
+            this.drawInteraction.on("endScale", this.textPrimitiveElement.scaleInteraction.endScale, this.textPrimitiveElement.scaleInteraction);
+            // -- Draw
+            this.drawInteraction.on("endDraw", this.endTextPrimitiveDraw, this);
+            this.drawInteraction.on("abortDraw", this.abortTextPrimitiveDraw, this);
+            //</editor-fold>
+        }
     }
 
     /**
@@ -251,8 +256,21 @@ export class TextPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Tex
         }
         this.positionPointElement.model.primitives.push(this.textPrimitiveElement.model as any);
 
-        // End text primitive draw
-        this.endTextPrimitiveDraw();
+        // Check for trigger var
+        if (this.triggerImmediateEndDraw) {
+            this.endTextPrimitiveDraw()
+        } else {
+            //<editor-fold desc="Events">
+            // -- Image
+            this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction);
+            this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction);
+            this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction);
+            this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction);
+            // -- Draw
+            this.drawInteraction.on("endDraw", this.endTextPrimitiveDraw, this);
+            this.drawInteraction.on("abortDraw", this.abortTextPrimitiveDraw, this);
+            //</editor-fold>
+        }
     }
 
     /**
@@ -368,5 +386,20 @@ export class TextPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Tex
     public set rotateWithLine(value: boolean) {
         this.data.rotateWithLine = value;
     }
+
+    /**
+     * Get trigger immediate end draw
+     */
+    public get triggerImmediateEndDraw(): boolean {
+        return this.data.triggerImmediateEndDraw;
+    }
+
+    /**
+     * Set trigger immediate end draw
+     * @param value
+     */
+    public set triggerImmediateEndDraw(value: boolean) {
+        this.data.triggerImmediateEndDraw = value;
+    }
     //</editor-fold>
 }
\ No newline at end of file