@@ -121,18 +121,26 @@ export function App({
121121 const [ resizeStartWidth , setResizeStartWidth ] = useState < number | null > ( null ) ;
122122 const [ selectedFileId , setSelectedFileId ] = useState ( bootstrap . changeset . files [ 0 ] ?. id ?? "" ) ;
123123 const [ selectedHunkIndex , setSelectedHunkIndex ] = useState ( 0 ) ;
124+ const [ selectedFileTopAlignRequestId , setSelectedFileTopAlignRequestId ] = useState ( 0 ) ;
124125 const [ scrollToNote , setScrollToNote ] = useState ( false ) ;
125126 const deferredFilter = useDeferredValue ( filter ) ;
126127
127128 const pagerMode = Boolean ( bootstrap . input . options . pager ) ;
128129 const activeTheme = resolveTheme ( themeId , renderer . themeMode ) ;
129130
130- const jumpToFile = useCallback ( ( fileId : string , nextHunkIndex = 0 ) => {
131- filesScrollRef . current ?. scrollChildIntoView ( fileRowId ( fileId ) ) ;
132- setSelectedFileId ( fileId ) ;
133- setSelectedHunkIndex ( nextHunkIndex ) ;
134- setScrollToNote ( false ) ;
135- } , [ ] ) ;
131+ const jumpToFile = useCallback (
132+ ( fileId : string , nextHunkIndex = 0 , options ?: { alignFileHeaderTop ?: boolean } ) => {
133+ filesScrollRef . current ?. scrollChildIntoView ( fileRowId ( fileId ) ) ;
134+ setSelectedFileId ( fileId ) ;
135+ setSelectedHunkIndex ( nextHunkIndex ) ;
136+ setScrollToNote ( false ) ;
137+
138+ if ( options ?. alignFileHeaderTop ) {
139+ setSelectedFileTopAlignRequestId ( ( current ) => current + 1 ) ;
140+ }
141+ } ,
142+ [ ] ,
143+ ) ;
136144
137145 const jumpToAnnotatedHunk = useCallback ( ( fileId : string , nextHunkIndex = 0 ) => {
138146 filesScrollRef . current ?. scrollChildIntoView ( fileRowId ( fileId ) ) ;
@@ -948,7 +956,7 @@ export function App({
948956 width = { clampedFilesPaneWidth }
949957 onSelectFile = { ( fileId ) => {
950958 setFocusArea ( "files" ) ;
951- jumpToFile ( fileId ) ;
959+ jumpToFile ( fileId , 0 , { alignFileHeaderTop : true } ) ;
952960 } }
953961 />
954962
@@ -982,6 +990,7 @@ export function App({
982990 showHunkHeaders = { showHunkHeaders }
983991 wrapLines = { wrapLines }
984992 wrapToggleScrollTop = { wrapToggleScrollTopRef . current }
993+ selectedFileTopAlignRequestId = { selectedFileTopAlignRequestId }
985994 theme = { activeTheme }
986995 width = { diffPaneWidth }
987996 onOpenAgentNotesAtHunk = { openAgentNotesAtHunk }
0 commit comments