Skip to content

Commit ff10ef7

Browse files
authored
Merge pull request #115 from atom-community/refactor-selectable-overlay
2 parents ef0da88 + eba2a13 commit ff10ef7

File tree

4 files changed

+8
-7331
lines changed

4 files changed

+8
-7331
lines changed

lib/datatip-manager.ts

Lines changed: 3 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ import {
77
TextEditorElement,
88
CommandEvent,
99
CursorPositionChangedEvent,
10-
TextEditorComponent,
1110
} from "atom"
1211
import type { Datatip, DatatipProvider } from "atom-ide-base"
1312
import { ViewContainer } from "atom-ide-base/commons-ui/float-pane/ViewContainer"
1413
import { ProviderRegistry } from "atom-ide-base/commons-atom/ProviderRegistry"
14+
import { makeOverlaySelectable, copyListener } from "atom-ide-base/commons-ui/float-pane/selectable-overlay"
1515

1616
export class DataTipManager {
1717
/**
@@ -476,8 +476,8 @@ export class DataTipManager {
476476
invalidate: "never",
477477
})
478478

479-
// makes the text selectable with the help of user-select: text
480-
element.setAttribute("tabindex", "-1")
479+
// makes overlay selectable
480+
makeOverlaySelectable(editor, element)
481481

482482
editor.decorateMarker(overlayMarker, {
483483
type: "overlay",
@@ -487,8 +487,6 @@ export class DataTipManager {
487487
})
488488
disposables.add(new Disposable(() => overlayMarker.destroy()))
489489

490-
const editorComponent = atom.views.getView(editor).getComponent()
491-
492490
element.addEventListener("mouseenter", () => {
493491
this.editorView?.removeEventListener("mousemove", this.onMouseMoveEvt)
494492
element.addEventListener("keydown", copyListener)
@@ -499,17 +497,6 @@ export class DataTipManager {
499497
element.removeEventListener("keydown", copyListener)
500498
})
501499

502-
/**
503-
- focus on the datatip once the text is selected (cursor gets disabled temporarily)
504-
- remove focus once mouse leaves
505-
*/
506-
element.addEventListener("mousedown", () => {
507-
blurEditor(editorComponent)
508-
element.addEventListener("mouseleave", () => {
509-
focusEditor(editorComponent)
510-
})
511-
})
512-
513500
// TODO move this code to atom-ide-base
514501
element.addEventListener("wheel", this.onMouseWheel, { passive: true })
515502

@@ -532,25 +519,3 @@ export class DataTipManager {
532519
this.dataTipMarkerDisposables = null
533520
}
534521
}
535-
536-
// TODO we should not need this
537-
/** A manual copy listener */
538-
async function copyListener(event: KeyboardEvent) {
539-
event.preventDefault()
540-
if (event.ctrlKey && event.key === "c") {
541-
const text = document.getSelection()?.toString() ?? ""
542-
await navigator.clipboard.writeText(text)
543-
}
544-
}
545-
546-
function focusEditor(editorComponent: TextEditorComponent) {
547-
// @ts-ignore
548-
editorComponent?.didFocus()
549-
}
550-
551-
function blurEditor(editorComponent: TextEditorComponent) {
552-
// @ts-ignore
553-
editorComponent?.didBlurHiddenInput({
554-
relatedTarget: null,
555-
})
556-
}

0 commit comments

Comments
 (0)