diff --git a/lib/codemirror.js b/lib/codemirror.js
index aa22d58499fd88e546ffdbb3a5a978fca56540de..51f956506b8cf3edfc195916d8f939ba44098b2a 100644
--- a/lib/codemirror.js
+++ b/lib/codemirror.js
@@ -3556,7 +3556,8 @@
     var sel = cm.doc.sel, modifier = mac ? e.metaKey : e.ctrlKey, contained;
     if (cm.options.dragDrop && dragAndDrop && !isReadOnly(cm) &&
         type == "single" && (contained = sel.contains(start)) > -1 &&
-        !sel.ranges[contained].empty())
+        (cmp((contained = sel.ranges[contained]).from(), start) < 0 || start.xRel > 0) &&
+        (cmp(contained.to(), start) > 0 || start.xRel < 0))
       leftButtonStartDrag(cm, e, start, modifier);
     else
       leftButtonSelect(cm, e, start, type, modifier);