@@ -145,8 +145,12 @@ export function SessionSidePanel(props: {
145145
146146 const [ store , setStore ] = createStore ( {
147147 activeDraggable : undefined as string | undefined ,
148+ fileTreeScrolled : false ,
148149 } )
149150
151+ let changesEl : HTMLDivElement | undefined
152+ let allEl : HTMLDivElement | undefined
153+
150154 const handleDragStart = ( event : unknown ) => {
151155 const id = getDraggableId ( event )
152156 if ( ! id ) return
@@ -167,6 +171,14 @@ export function SessionSidePanel(props: {
167171 setStore ( "activeDraggable" , undefined )
168172 }
169173
174+ createEffect ( ( ) => {
175+ if ( ! layout . fileTree . opened ( ) ) return
176+ const tab = fileTreeTab ( )
177+ const el = tab === "changes" ? changesEl : allEl
178+ const next = ( el ?. scrollTop ?? 0 ) > 0
179+ setStore ( "fileTreeScrolled" , ( current ) => ( current === next ? current : next ) )
180+ } )
181+
170182 createEffect ( ( ) => {
171183 if ( ! file . ready ( ) ) return
172184
@@ -335,7 +347,7 @@ export function SessionSidePanel(props: {
335347 class = "h-full"
336348 data-scope = "filetree"
337349 >
338- < Tabs . List >
350+ < Tabs . List data-scrolled = { store . fileTreeScrolled ? "" : undefined } >
339351 < Tabs . Trigger value = "changes" class = "flex-1" classes = { { button : "w-full" } } >
340352 { reviewCount ( ) } { " " }
341353 { language . t ( reviewCount ( ) === 1 ? "session.review.change.one" : "session.review.change.other" ) }
@@ -344,7 +356,16 @@ export function SessionSidePanel(props: {
344356 { language . t ( "session.files.all" ) }
345357 </ Tabs . Trigger >
346358 </ Tabs . List >
347- < Tabs . Content value = "changes" class = "bg-background-stronger px-3 py-0" >
359+ < Tabs . Content
360+ value = "changes"
361+ ref = { ( el : HTMLDivElement ) => ( changesEl = el ) }
362+ onScroll = { ( e : UIEvent & { currentTarget : HTMLDivElement } ) => {
363+ if ( fileTreeTab ( ) !== "changes" ) return
364+ const next = e . currentTarget . scrollTop > 0
365+ setStore ( "fileTreeScrolled" , ( current ) => ( current === next ? current : next ) )
366+ } }
367+ class = "bg-background-stronger px-3 py-0"
368+ >
348369 < Switch >
349370 < Match when = { hasReview ( ) } >
350371 < Show
@@ -373,7 +394,16 @@ export function SessionSidePanel(props: {
373394 </ Match >
374395 </ Switch >
375396 </ Tabs . Content >
376- < Tabs . Content value = "all" class = "bg-background-stronger px-3 py-0" >
397+ < Tabs . Content
398+ value = "all"
399+ ref = { ( el : HTMLDivElement ) => ( allEl = el ) }
400+ onScroll = { ( e : UIEvent & { currentTarget : HTMLDivElement } ) => {
401+ if ( fileTreeTab ( ) !== "all" ) return
402+ const next = e . currentTarget . scrollTop > 0
403+ setStore ( "fileTreeScrolled" , ( current ) => ( current === next ? current : next ) )
404+ } }
405+ class = "bg-background-stronger px-3 py-0"
406+ >
377407 < FileTree
378408 path = ""
379409 modified = { diffFiles ( ) }
0 commit comments