diff --git a/src/General/css/style.css b/src/General/css/style.css index b82ebe3e7..1d958db69 100755 --- a/src/General/css/style.css +++ b/src/General/css/style.css @@ -1270,6 +1270,11 @@ input.field.tripped:not(:hover):not(:focus) { width: 100%; } +/* Prevent dragging files into captcha */ +:root.dragging iframe { + pointer-events: none; +} + /* File Input, Submit Button */ #file-n-submit { display: -webkit-flex; diff --git a/src/Posting/QR.coffee b/src/Posting/QR.coffee index 14292178e..413e92ff8 100644 --- a/src/Posting/QR.coffee +++ b/src/Posting/QR.coffee @@ -75,6 +75,8 @@ QR = $.on d, 'dragover', QR.dragOver $.on d, 'drop', QR.dropFile $.on d, 'dragstart dragend', QR.drag + $.on d, 'dragenter', QR.dragEnter + $.on d, 'dragleave', QR.dragLeave $.on d, 'IndexRefresh', QR.generatePostableThreadsList $.on d, 'ThreadUpdate', QR.statusCheck @@ -315,12 +317,25 @@ QR = e.dataTransfer.dropEffect = 'copy' # cursor feedback dropFile: (e) -> + delete QR.dragTarget + $.rmClass doc, 'dragging' + # Let it only handle files from the desktop. return unless e.dataTransfer.files.length + e.preventDefault() QR.open() QR.handleFiles e.dataTransfer.files + dragEnter: (e) -> + QR.dragTarget = e.target + $.addClass doc, 'dragging' + + dragLeave: (e) -> + if QR.dragTarget is e.target + delete QR.dragTarget + $.rmClass doc, 'dragging' + paste: (e) -> return unless e.clipboardData.items files = []