@@ -495,15 +495,17 @@ export class MouseTargetFactory {
495495 const request = new HitTestRequest ( ctx , editorPos , pos , relativePos , target ) ;
496496 try {
497497 const r = MouseTargetFactory . _createMouseTarget ( ctx , request , false ) ;
498- // console.log(MouseTarget.toString(r));
499498
500499 if ( r . type === MouseTargetType . CONTENT_TEXT ) {
501500 // Snap to the nearest soft tab boundary if atomic soft tabs are enabled.
502501 if ( ctx . stickyTabStops && r . position !== null ) {
503502 const position = MouseTargetFactory . _snapToSoftTabBoundary ( r . position , ctx . viewModel ) ;
504- return request . fulfillContentText ( position , r . range , r . detail ) ;
503+ const range = EditorRange . fromPositions ( position , position ) . plusRange ( r . range ) ;
504+ return request . fulfillContentText ( position , range , r . detail ) ;
505505 }
506506 }
507+
508+ // console.log(MouseTarget.toString(r));
507509 return r ;
508510 } catch ( err ) {
509511 // console.log(err);
@@ -782,12 +784,10 @@ export class MouseTargetFactory {
782784 const lineNumber = pos . lineNumber ;
783785 const column = pos . column ;
784786
785- const mouseContentHorizontalOffset = Math . floor ( request . mouseContentHorizontalOffset ) ;
786-
787787 const lineWidth = ctx . getLineWidth ( lineNumber ) ;
788788
789- if ( mouseContentHorizontalOffset > lineWidth ) {
790- const detail = createEmptyContentDataInLines ( mouseContentHorizontalOffset - lineWidth ) ;
789+ if ( request . mouseContentHorizontalOffset > lineWidth ) {
790+ const detail = createEmptyContentDataInLines ( request . mouseContentHorizontalOffset - lineWidth ) ;
791791 return request . fulfillContentEmpty ( pos , detail ) ;
792792 }
793793
@@ -799,7 +799,7 @@ export class MouseTargetFactory {
799799
800800 const columnHorizontalOffset = visibleRange . left ;
801801
802- if ( mouseContentHorizontalOffset === columnHorizontalOffset ) {
802+ if ( Math . abs ( request . mouseContentHorizontalOffset - columnHorizontalOffset ) < 1 ) {
803803 return request . fulfillContentText ( pos , null , { mightBeForeignElement : ! ! injectedText , injectedText } ) ;
804804 }
805805
@@ -833,15 +833,15 @@ export class MouseTargetFactory {
833833 for ( let i = 1 ; i < points . length ; i ++ ) {
834834 const prev = points [ i - 1 ] ;
835835 const curr = points [ i ] ;
836- if ( prev . offset <= mouseContentHorizontalOffset && mouseContentHorizontalOffset <= curr . offset ) {
836+ if ( prev . offset <= request . mouseContentHorizontalOffset && request . mouseContentHorizontalOffset <= curr . offset ) {
837837 rng = new EditorRange ( lineNumber , prev . column , lineNumber , curr . column ) ;
838838
839839 // See https://github.com/microsoft/vscode/issues/152819
840840 // Due to the use of zwj, the browser's hit test result is skewed towards the left
841841 // Here we try to correct that if the mouse horizontal offset is closer to the right than the left
842842
843- const prevDelta = Math . abs ( prev . offset - mouseContentHorizontalOffset ) ;
844- const nextDelta = Math . abs ( curr . offset - mouseContentHorizontalOffset ) ;
843+ const prevDelta = Math . abs ( prev . offset - request . mouseContentHorizontalOffset ) ;
844+ const nextDelta = Math . abs ( curr . offset - request . mouseContentHorizontalOffset ) ;
845845
846846 pos = (
847847 prevDelta < nextDelta
0 commit comments