From 0372db43bb6e476eb95f0dca994647e5ab835a51 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Tue, 22 Aug 2017 12:04:52 +0200 Subject: [PATCH] Don't select when typing while also holding the left mouse button --- src/text-editor-component.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/text-editor-component.js b/src/text-editor-component.js index 3dec1f6ff..7e23e5745 100644 --- a/src/text-editor-component.js +++ b/src/text-editor-component.js @@ -1864,6 +1864,7 @@ class TextEditorComponent { handleMouseDragUntilMouseUp ({didDrag, didStopDragging}) { let dragging = false let lastMousemoveEvent + let bufferWillChangeDisposable const animationFrameLoop = () => { window.requestAnimationFrame(() => { @@ -1885,6 +1886,7 @@ class TextEditorComponent { function didMouseUp () { window.removeEventListener('mousemove', didMouseMove) window.removeEventListener('mouseup', didMouseUp) + bufferWillChangeDisposable.dispose() if (dragging) { dragging = false didStopDragging() @@ -1893,6 +1895,10 @@ class TextEditorComponent { window.addEventListener('mousemove', didMouseMove) window.addEventListener('mouseup', didMouseUp, {capture: true}) + // Simulate a mouse-up event if the buffer is about to change. This prevents + // unwanted selections when users perform edits while holding the left mouse + // button at the same time. + bufferWillChangeDisposable = this.props.model.getBuffer().onWillChange(didMouseUp) } autoscrollOnMouseDrag ({clientX, clientY}, verticalOnly = false) {