diff --git a/js/ui/dnd.js b/js/ui/dnd.js
index 4fbe1acc7..cefde6f60 100644
--- a/js/ui/dnd.js
+++ b/js/ui/dnd.js
@@ -508,9 +508,14 @@ var _Draggable = class _Draggable {
         if (!currentDraggable &&
             (Math.abs(stageX - this._dragStartX) > threshold ||
              Math.abs(stageY - this._dragStartY) > threshold)) {
+            const deviceType = event.get_source_device().get_device_type();
+            const isPointerOrTouchpad =
+                deviceType === Clutter.InputDeviceType.POINTER_DEVICE ||
+                deviceType === Clutter.InputDeviceType.TOUCHPAD_DEVICE;
             const ellapsedTime = event.get_time() - this._dragStartTime;
 
-            if (ellapsedTime > this._dragTimeoutThreshold) {
+            // Pointer devices (e.g. mouse) start the drag immediately
+            if (isPointerOrTouchpad || ellapsedTime > this._dragTimeoutThreshold) {
                 this.startDrag(stageX, stageY, event.get_time(), this._touchSequence, event.get_device());
                 this._updateDragPosition(event);
             } else {