@@ -496,41 +496,45 @@ class MouseDownOperation extends Disposable {
496
496
const mouseColumn = this . _getMouseColumn ( e ) ;
497
497
498
498
if ( e . posy < editorContent . y ) {
499
- const verticalOffset = Math . max ( viewLayout . getCurrentScrollTop ( ) - ( editorContent . y - e . posy ) , 0 ) ;
499
+ const outsideDistance = editorContent . y - e . posy ;
500
+ const verticalOffset = Math . max ( viewLayout . getCurrentScrollTop ( ) - outsideDistance , 0 ) ;
500
501
const viewZoneData = HitTestContext . getZoneAtCoord ( this . _context , verticalOffset ) ;
501
502
if ( viewZoneData ) {
502
503
const newPosition = this . _helpPositionJumpOverViewZone ( viewZoneData ) ;
503
504
if ( newPosition ) {
504
- return MouseTarget . createOutsideEditor ( mouseColumn , newPosition , 'above' ) ;
505
+ return MouseTarget . createOutsideEditor ( mouseColumn , newPosition , 'above' , outsideDistance ) ;
505
506
}
506
507
}
507
508
508
509
const aboveLineNumber = viewLayout . getLineNumberAtVerticalOffset ( verticalOffset ) ;
509
- return MouseTarget . createOutsideEditor ( mouseColumn , new Position ( aboveLineNumber , 1 ) , 'above' ) ;
510
+ return MouseTarget . createOutsideEditor ( mouseColumn , new Position ( aboveLineNumber , 1 ) , 'above' , outsideDistance ) ;
510
511
}
511
512
512
513
if ( e . posy > editorContent . y + editorContent . height ) {
514
+ const outsideDistance = e . posy - editorContent . y - editorContent . height ;
513
515
const verticalOffset = viewLayout . getCurrentScrollTop ( ) + e . relativePos . y ;
514
516
const viewZoneData = HitTestContext . getZoneAtCoord ( this . _context , verticalOffset ) ;
515
517
if ( viewZoneData ) {
516
518
const newPosition = this . _helpPositionJumpOverViewZone ( viewZoneData ) ;
517
519
if ( newPosition ) {
518
- return MouseTarget . createOutsideEditor ( mouseColumn , newPosition , 'below' ) ;
520
+ return MouseTarget . createOutsideEditor ( mouseColumn , newPosition , 'below' , outsideDistance ) ;
519
521
}
520
522
}
521
523
522
524
const belowLineNumber = viewLayout . getLineNumberAtVerticalOffset ( verticalOffset ) ;
523
- return MouseTarget . createOutsideEditor ( mouseColumn , new Position ( belowLineNumber , model . getLineMaxColumn ( belowLineNumber ) ) , 'below' ) ;
525
+ return MouseTarget . createOutsideEditor ( mouseColumn , new Position ( belowLineNumber , model . getLineMaxColumn ( belowLineNumber ) ) , 'below' , outsideDistance ) ;
524
526
}
525
527
526
528
const possibleLineNumber = viewLayout . getLineNumberAtVerticalOffset ( viewLayout . getCurrentScrollTop ( ) + e . relativePos . y ) ;
527
529
528
530
if ( e . posx < editorContent . x ) {
529
- return MouseTarget . createOutsideEditor ( mouseColumn , new Position ( possibleLineNumber , 1 ) , 'left' ) ;
531
+ const outsideDistance = editorContent . x - e . posx ;
532
+ return MouseTarget . createOutsideEditor ( mouseColumn , new Position ( possibleLineNumber , 1 ) , 'left' , outsideDistance ) ;
530
533
}
531
534
532
535
if ( e . posx > editorContent . x + editorContent . width ) {
533
- return MouseTarget . createOutsideEditor ( mouseColumn , new Position ( possibleLineNumber , model . getLineMaxColumn ( possibleLineNumber ) ) , 'right' ) ;
536
+ const outsideDistance = e . posx - editorContent . x - editorContent . width ;
537
+ return MouseTarget . createOutsideEditor ( mouseColumn , new Position ( possibleLineNumber , model . getLineMaxColumn ( possibleLineNumber ) ) , 'right' , outsideDistance ) ;
534
538
}
535
539
536
540
return null ;
0 commit comments