@@ -7,11 +7,11 @@ import {
77 TextEditorElement ,
88 CommandEvent ,
99 CursorPositionChangedEvent ,
10- TextEditorComponent ,
1110} from "atom"
1211import type { Datatip , DatatipProvider } from "atom-ide-base"
1312import { ViewContainer } from "atom-ide-base/commons-ui/float-pane/ViewContainer"
1413import { ProviderRegistry } from "atom-ide-base/commons-atom/ProviderRegistry"
14+ import { makeOverlaySelectable , copyListener } from "atom-ide-base/commons-ui/float-pane/selectable-overlay"
1515
1616export 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