From 6dffe99571260a846dcff7e4ec075bb7c180eb23 Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Tue, 2 Feb 2021 12:09:40 -0600 Subject: [PATCH] fix: remove focus once mouse leaves --- lib/datatip-manager.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/lib/datatip-manager.ts b/lib/datatip-manager.ts index 3b3c972..a83be58 100644 --- a/lib/datatip-manager.ts +++ b/lib/datatip-manager.ts @@ -7,6 +7,7 @@ import { TextEditorElement, CommandEvent, CursorPositionChangedEvent, + TextEditorComponent, } from "atom" import type { Datatip, DatatipProvider } from "atom-ide-base" import { ViewContainer } from "atom-ide-base/commons-ui/float-pane/ViewContainer" @@ -486,6 +487,8 @@ export class DataTipManager { }) disposables.add(new Disposable(() => overlayMarker.destroy())) + const editorComponent = atom.views.getView(editor).getComponent() + element.addEventListener("mouseenter", () => { this.editorView?.removeEventListener("mousemove", this.onMouseMoveEvt) element.addEventListener("keydown", copyListener) @@ -496,6 +499,17 @@ export class DataTipManager { element.removeEventListener("keydown", copyListener) }) + /** + - focus on the datatip once the text is selected (cursor gets disabled temporarily) + - remove focus once mouse leaves + */ + element.addEventListener("mousedown", () => { + blurEditor(editorComponent) + element.addEventListener("mouseleave", () => { + focusEditor(editorComponent) + }) + }) + // TODO move this code to atom-ide-base element.addEventListener("wheel", this.onMouseWheel, { passive: true }) @@ -529,3 +543,14 @@ function copyListener(event: KeyboardEvent) { } } +function focusEditor(editorComponent: TextEditorComponent) { + // @ts-ignore + editorComponent?.didFocus() +} + +function blurEditor(editorComponent: TextEditorComponent) { + // @ts-ignore + editorComponent?.didBlurHiddenInput({ + relatedTarget: null, + }) +}