@@ -12,6 +12,7 @@ import { Disposable, DisposableStore, IDisposable, MutableDisposable } from 'vs/
1212import { isMacintosh } from 'vs/base/common/platform' ;
1313import { ScrollEvent } from 'vs/base/common/scrollable' ;
1414import { Range } from 'vs/editor/common/core/range' ;
15+ import { Selection } from 'vs/editor/common/core/selection' ;
1516import { TrackedRangeStickiness } from 'vs/editor/common/model' ;
1617import { PrefixSumComputer } from 'vs/editor/common/model/prefixSumComputer' ;
1718import { IConfigurationService } from 'vs/platform/configuration/common/configuration' ;
@@ -914,7 +915,7 @@ export class NotebookCellList extends WorkbenchList<CellViewModel> implements ID
914915 //#endregion
915916
916917 //#region Reveal Cell Editor Range asynchronously
917- async revealCellRangeAsync ( cell : ICellViewModel , range : Range , revealType : CellRevealRangeType ) : Promise < void > {
918+ async revealCellRangeAsync ( cell : ICellViewModel , range : Selection | Range , revealType : CellRevealRangeType ) : Promise < void > {
918919 const index = this . _getViewIndexUpperBound ( cell ) ;
919920
920921 if ( index < 0 ) {
@@ -934,7 +935,7 @@ export class NotebookCellList extends WorkbenchList<CellViewModel> implements ID
934935 // List items have real dynamic heights, which means after we set `scrollTop` based on the `elementTop(index)`, the element at `index` might still be removed from the view once all relayouting tasks are done.
935936 // For example, we scroll item 10 into the view upwards, in the first round, items 7, 8, 9, 10 are all in the viewport. Then item 7 and 8 resize themselves to be larger and finally item 10 is removed from the view.
936937 // To ensure that item 10 is always there, we need to scroll item 10 to the top edge of the viewport.
937- private async _revealRangeInternalAsync ( viewIndex : number , range : Range , revealType : CellEditorRevealType ) : Promise < void > {
938+ private async _revealRangeInternalAsync ( viewIndex : number , range : Selection | Range , revealType : CellEditorRevealType ) : Promise < void > {
938939 const scrollTop = this . getViewScrollTop ( ) ;
939940 const wrapperBottom = this . getViewScrollBottom ( ) ;
940941 const elementTop = this . view . elementTop ( viewIndex ) ;
@@ -968,10 +969,10 @@ export class NotebookCellList extends WorkbenchList<CellViewModel> implements ID
968969 }
969970 }
970971
971- private async _revealRangeInCenterInternalAsync ( viewIndex : number , range : Range , revealType : CellEditorRevealType ) : Promise < void > {
972+ private async _revealRangeInCenterInternalAsync ( viewIndex : number , range : Selection | Range , revealType : CellEditorRevealType ) : Promise < void > {
972973 const reveal = ( viewIndex : number , range : Range , revealType : CellEditorRevealType ) => {
973974 const element = this . view . element ( viewIndex ) ;
974- const positionOffset = element . getPositionScrollTopOffset ( range . startLineNumber , range . startColumn ) ;
975+ const positionOffset = element . getPositionScrollTopOffset ( range ) ;
975976 const positionOffsetInView = this . view . elementTop ( viewIndex ) + positionOffset ;
976977 this . view . setScrollTop ( positionOffsetInView - this . view . renderHeight / 2 ) ;
977978
@@ -992,10 +993,10 @@ export class NotebookCellList extends WorkbenchList<CellViewModel> implements ID
992993 }
993994 }
994995
995- private async _revealRangeInCenterIfOutsideViewportInternalAsync ( viewIndex : number , range : Range , revealType : CellEditorRevealType ) : Promise < void > {
996+ private async _revealRangeInCenterIfOutsideViewportInternalAsync ( viewIndex : number , range : Selection | Range , revealType : CellEditorRevealType ) : Promise < void > {
996997 const reveal = ( viewIndex : number , range : Range , revealType : CellEditorRevealType ) => {
997998 const element = this . view . element ( viewIndex ) ;
998- const positionOffset = element . getPositionScrollTopOffset ( range . startLineNumber , range . startColumn ) ;
999+ const positionOffset = element . getPositionScrollTopOffset ( range ) ;
9991000 const positionOffsetInView = this . view . elementTop ( viewIndex ) + positionOffset ;
10001001 this . view . setScrollTop ( positionOffsetInView - this . view . renderHeight / 2 ) ;
10011002
@@ -1009,14 +1010,14 @@ export class NotebookCellList extends WorkbenchList<CellViewModel> implements ID
10091010 const elementTop = this . view . elementTop ( viewIndex ) ;
10101011 const viewItemOffset = elementTop ;
10111012 const element = this . view . element ( viewIndex ) ;
1012- const positionOffset = viewItemOffset + element . getPositionScrollTopOffset ( range . startLineNumber , range . startColumn ) ;
1013+ const positionOffset = viewItemOffset + element . getPositionScrollTopOffset ( range ) ;
10131014
10141015 if ( positionOffset < scrollTop || positionOffset > wrapperBottom ) {
10151016 // let it render
10161017 this . view . setScrollTop ( positionOffset - this . view . renderHeight / 2 ) ;
10171018
10181019 // after rendering, it might be pushed down due to markdown cell dynamic height
1019- const newPositionOffset = this . view . elementTop ( viewIndex ) + element . getPositionScrollTopOffset ( range . startLineNumber , range . startColumn ) ;
1020+ const newPositionOffset = this . view . elementTop ( viewIndex ) + element . getPositionScrollTopOffset ( range ) ;
10201021 this . view . setScrollTop ( newPositionOffset - this . view . renderHeight / 2 ) ;
10211022
10221023 // reveal editor
@@ -1035,11 +1036,11 @@ export class NotebookCellList extends WorkbenchList<CellViewModel> implements ID
10351036 }
10361037 }
10371038
1038- private _revealRangeCommon ( viewIndex : number , range : Range , revealType : CellEditorRevealType , newlyCreated : boolean , alignToBottom : boolean ) {
1039+ private _revealRangeCommon ( viewIndex : number , range : Selection | Range , revealType : CellEditorRevealType , newlyCreated : boolean , alignToBottom : boolean ) {
10391040 const element = this . view . element ( viewIndex ) ;
10401041 const scrollTop = this . getViewScrollTop ( ) ;
10411042 const wrapperBottom = this . getViewScrollBottom ( ) ;
1042- const positionOffset = element . getPositionScrollTopOffset ( range . startLineNumber , range . startColumn ) ;
1043+ const positionOffset = element . getPositionScrollTopOffset ( range ) ;
10431044 const elementOriginalHeight = this . view . elementHeight ( viewIndex ) ;
10441045 if ( positionOffset >= elementOriginalHeight ) {
10451046 // we are revealing a range that is beyond current element height
0 commit comments