@@ -495,15 +495,17 @@ export class MouseTargetFactory {
495
495
const request = new HitTestRequest ( ctx , editorPos , pos , relativePos , target ) ;
496
496
try {
497
497
const r = MouseTargetFactory . _createMouseTarget ( ctx , request , false ) ;
498
- // console.log(MouseTarget.toString(r));
499
498
500
499
if ( r . type === MouseTargetType . CONTENT_TEXT ) {
501
500
// Snap to the nearest soft tab boundary if atomic soft tabs are enabled.
502
501
if ( ctx . stickyTabStops && r . position !== null ) {
503
502
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 ) ;
505
505
}
506
506
}
507
+
508
+ // console.log(MouseTarget.toString(r));
507
509
return r ;
508
510
} catch ( err ) {
509
511
// console.log(err);
@@ -782,12 +784,10 @@ export class MouseTargetFactory {
782
784
const lineNumber = pos . lineNumber ;
783
785
const column = pos . column ;
784
786
785
- const mouseContentHorizontalOffset = Math . floor ( request . mouseContentHorizontalOffset ) ;
786
-
787
787
const lineWidth = ctx . getLineWidth ( lineNumber ) ;
788
788
789
- if ( mouseContentHorizontalOffset > lineWidth ) {
790
- const detail = createEmptyContentDataInLines ( mouseContentHorizontalOffset - lineWidth ) ;
789
+ if ( request . mouseContentHorizontalOffset > lineWidth ) {
790
+ const detail = createEmptyContentDataInLines ( request . mouseContentHorizontalOffset - lineWidth ) ;
791
791
return request . fulfillContentEmpty ( pos , detail ) ;
792
792
}
793
793
@@ -799,7 +799,7 @@ export class MouseTargetFactory {
799
799
800
800
const columnHorizontalOffset = visibleRange . left ;
801
801
802
- if ( mouseContentHorizontalOffset === columnHorizontalOffset ) {
802
+ if ( Math . abs ( request . mouseContentHorizontalOffset - columnHorizontalOffset ) < 1 ) {
803
803
return request . fulfillContentText ( pos , null , { mightBeForeignElement : ! ! injectedText , injectedText } ) ;
804
804
}
805
805
@@ -833,15 +833,15 @@ export class MouseTargetFactory {
833
833
for ( let i = 1 ; i < points . length ; i ++ ) {
834
834
const prev = points [ i - 1 ] ;
835
835
const curr = points [ i ] ;
836
- if ( prev . offset <= mouseContentHorizontalOffset && mouseContentHorizontalOffset <= curr . offset ) {
836
+ if ( prev . offset <= request . mouseContentHorizontalOffset && request . mouseContentHorizontalOffset <= curr . offset ) {
837
837
rng = new EditorRange ( lineNumber , prev . column , lineNumber , curr . column ) ;
838
838
839
839
// See https://github.com/microsoft/vscode/issues/152819
840
840
// Due to the use of zwj, the browser's hit test result is skewed towards the left
841
841
// Here we try to correct that if the mouse horizontal offset is closer to the right than the left
842
842
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 ) ;
845
845
846
846
pos = (
847
847
prevDelta < nextDelta
0 commit comments