@@ -85,6 +85,10 @@ export class Views implements Disposable {
8585		return  this . _scmGroupedViews ; 
8686	} 
8787
88+ 	private  _lastSelectedByView  =  new  Map < 
89+ 		GroupableTreeViewTypes , 
90+ 		{  node : ViewNode ;  parents : ViewNode [ ] ;  expanded : boolean  } 
91+ 	> ( ) ; 
8892	private  _welcomeDismissed  =  false ; 
8993
9094	constructor ( 
@@ -482,7 +486,43 @@ export class Views implements Disposable {
482486
483487	private  setScmGroupedView < T  extends  GroupableTreeViewTypes > ( type : T ,  focus ?: boolean )  { 
484488		if  ( this . _scmGroupedView  !=  null )  { 
485- 			return  this . _scmGroupedView . setView ( type ,  focus ) ; 
489+ 			// Save current selection before switching views 
490+ 			let  {  view }  =  this . _scmGroupedView ; 
491+ 			if  ( view )  { 
492+ 				const  node : ViewNode  |  undefined  =  view . selection ?. [ 0 ] ; 
493+ 				if  ( node  !=  null )  { 
494+ 					const  parents : ViewNode [ ]  =  [ ] ; 
495+ 
496+ 					let  parent : ViewNode  |  undefined  =  node ; 
497+ 					while  ( true )  { 
498+ 						parent  =  parent . getParent ( ) ; 
499+ 						if  ( parent  ==  null )  break ; 
500+ 
501+ 						parents . unshift ( parent ) ; 
502+ 					} 
503+ 
504+ 					this . _lastSelectedByView . set ( view . type ,  { 
505+ 						node : node , 
506+ 						parents : parents , 
507+ 						expanded : view . isNodeExpanded ( node ) , 
508+ 					} ) ; 
509+ 				} 
510+ 			} 
511+ 
512+ 			view  =  this . _scmGroupedView . setView ( type ,  focus ) ; 
513+ 
514+ 			// Restore the last selection for this view type (if any) 
515+ 			if  ( view )  { 
516+ 				const  selection  =  this . _lastSelectedByView . get ( type ) ; 
517+ 				if  ( selection  !=  null )  { 
518+ 					setTimeout ( async  ( )  =>  { 
519+ 						const  {  node,  parents,  expanded }  =  selection ; 
520+ 						await  view . revealDeep ( node ,  parents ,  {  expand : expanded ,  focus : focus  ??  false ,  select : true  } ) ; 
521+ 					} ,  1 ) ; 
522+ 				} 
523+ 			} 
524+ 
525+ 			return  view ; 
486526		} 
487527
488528		if  ( ! this . scmGroupedViews ?. has ( type ) )  { 
0 commit comments