@@ -7,11 +7,11 @@ import {
7
7
TextEditorElement ,
8
8
CommandEvent ,
9
9
CursorPositionChangedEvent ,
10
- TextEditorComponent ,
11
10
} from "atom"
12
11
import type { Datatip , DatatipProvider } from "atom-ide-base"
13
12
import { ViewContainer } from "atom-ide-base/commons-ui/float-pane/ViewContainer"
14
13
import { ProviderRegistry } from "atom-ide-base/commons-atom/ProviderRegistry"
14
+ import { makeOverlaySelectable , copyListener } from "./selectable-overlay"
15
15
16
16
export class DataTipManager {
17
17
/**
@@ -476,7 +476,7 @@ export class DataTipManager {
476
476
invalidate : "never" ,
477
477
} )
478
478
479
- //
479
+ // makes overlay selectable
480
480
makeOverlaySelectable ( editor , element )
481
481
482
482
editor . decorateMarker ( overlayMarker , {
@@ -487,7 +487,6 @@ export class DataTipManager {
487
487
} )
488
488
disposables . add ( new Disposable ( ( ) => overlayMarker . destroy ( ) ) )
489
489
490
-
491
490
element . addEventListener ( "mouseenter" , ( ) => {
492
491
this . editorView ?. removeEventListener ( "mousemove" , this . onMouseMoveEvt )
493
492
element . addEventListener ( "keydown" , copyListener )
@@ -520,46 +519,3 @@ export class DataTipManager {
520
519
this . dataTipMarkerDisposables = null
521
520
}
522
521
}
523
-
524
- /** makes the text selectable with the help of user-select: text */
525
- function makeOverlaySelectable ( editor : TextEditor , overlayElement : HTMLElement ) {
526
- overlayElement . setAttribute ( "tabindex" , "-1" )
527
- overlayFocusFix ( editor , overlayElement )
528
- }
529
-
530
- function overlayFocusFix ( editor : TextEditor , element : HTMLElement ) {
531
- const editorComponent = atom . views . getView ( editor ) . getComponent ( )
532
- /**
533
- - focus on the datatip once the text is selected (cursor gets disabled temporarily)
534
- - remove focus once mouse leaves
535
- */
536
- element . addEventListener ( "mousedown" , ( ) => {
537
- blurEditor ( editorComponent )
538
- element . addEventListener ( "mouseleave" , ( ) => {
539
- focusEditor ( editorComponent )
540
- } )
541
- } )
542
-
543
- }
544
-
545
- // TODO we should not need this
546
- /** A manual copy listener */
547
- async function copyListener ( event : KeyboardEvent ) {
548
- event . preventDefault ( )
549
- if ( event . ctrlKey && event . key === "c" ) {
550
- const text = document . getSelection ( ) ?. toString ( ) ?? ""
551
- await navigator . clipboard . writeText ( text )
552
- }
553
- }
554
-
555
- function focusEditor ( editorComponent : TextEditorComponent ) {
556
- // @ts -ignore
557
- editorComponent ?. didFocus ( )
558
- }
559
-
560
- function blurEditor ( editorComponent : TextEditorComponent ) {
561
- // @ts -ignore
562
- editorComponent ?. didBlurHiddenInput ( {
563
- relatedTarget : null ,
564
- } )
565
- }
0 commit comments