From e8609af6a76cdc24387fbabb5a0e8c8f1700a617 Mon Sep 17 00:00:00 2001
From: zheyujie <richardzhe@hotmail.com>
Date: Fri, 10 Apr 2020 06:56:17 +1200
Subject: [PATCH] fix: dnd freezes an event intermittently (#1631)

* Fixed an issue where dnd freezes an event intermittently

* Make sure OnEnd is called no matter if it's being dragged
---
 src/addons/dragAndDrop/EventContainerWrapper.js | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/addons/dragAndDrop/EventContainerWrapper.js b/src/addons/dragAndDrop/EventContainerWrapper.js
index ec0cc985b3..53eb96f760 100644
--- a/src/addons/dragAndDrop/EventContainerWrapper.js
+++ b/src/addons/dragAndDrop/EventContainerWrapper.js
@@ -133,6 +133,7 @@ class EventContainerWrapper extends React.Component {
 
   _selectable = () => {
     let node = findDOMNode(this)
+    let isBeingDragged = false
     let selector = (this._selector = new Selection(() =>
       node.closest('.rbc-time-view')
     ))
@@ -177,16 +178,22 @@ class EventContainerWrapper extends React.Component {
       this.handleDropFromOutside(point, bounds)
     })
 
-    selector.on('selectStart', () => this.context.draggable.onStart())
+    selector.on('selectStart', () => {
+      isBeingDragged = true
+      this.context.draggable.onStart()
+    })
 
     selector.on('select', point => {
       const bounds = getBoundsForNode(node)
-
+      isBeingDragged = false
       if (!this.state.event || !pointInColumn(bounds, point)) return
       this.handleInteractionEnd()
     })
 
-    selector.on('click', () => this.context.draggable.onEnd(null))
+    selector.on('click', () => {
+      if (isBeingDragged) this.reset()
+      this.context.draggable.onEnd(null)
+    })
 
     selector.on('reset', () => {
       this.reset()