66import { URI , UriComponents } from 'vs/base/common/uri' ;
77import { Event , Emitter } from 'vs/base/common/event' ;
88import { assign } from 'vs/base/common/objects' ;
9- import { IDisposable , DisposableStore } from 'vs/base/common/lifecycle' ;
9+ import { IDisposable , DisposableStore , combinedDisposable } from 'vs/base/common/lifecycle' ;
1010import { ISCMService , ISCMRepository , ISCMProvider , ISCMResource , ISCMResourceGroup , ISCMResourceDecorations , IInputValidation } from 'vs/workbench/contrib/scm/common/scm' ;
1111import { ExtHostContext , MainThreadSCMShape , ExtHostSCMShape , SCMProviderFeatures , SCMRawResourceSplices , SCMGroupFeatures , MainContext , IExtHostContext } from '../common/extHost.protocol' ;
1212import { Command } from 'vs/editor/common/modes' ;
@@ -264,25 +264,22 @@ export class MainThreadSCM implements MainThreadSCMShape {
264264
265265 private readonly _proxy : ExtHostSCMShape ;
266266 private _repositories = new Map < number , ISCMRepository > ( ) ;
267- private _inputDisposables = new Map < number , IDisposable > ( ) ;
267+ private _repositoryDisposables = new Map < number , IDisposable > ( ) ;
268268 private readonly _disposables = new DisposableStore ( ) ;
269269
270270 constructor (
271271 extHostContext : IExtHostContext ,
272272 @ISCMService private readonly scmService : ISCMService
273273 ) {
274274 this . _proxy = extHostContext . getProxy ( ExtHostContext . ExtHostSCM ) ;
275-
276- Event . debounce ( scmService . onDidChangeSelectedRepositories , ( _ , e ) => e , 100 )
277- ( this . onDidChangeSelectedRepositories , this , this . _disposables ) ;
278275 }
279276
280277 dispose ( ) : void {
281278 this . _repositories . forEach ( r => r . dispose ( ) ) ;
282279 this . _repositories . clear ( ) ;
283280
284- this . _inputDisposables . forEach ( d => d . dispose ( ) ) ;
285- this . _inputDisposables . clear ( ) ;
281+ this . _repositoryDisposables . forEach ( d => d . dispose ( ) ) ;
282+ this . _repositoryDisposables . clear ( ) ;
286283
287284 this . _disposables . dispose ( ) ;
288285 }
@@ -292,8 +289,16 @@ export class MainThreadSCM implements MainThreadSCMShape {
292289 const repository = this . scmService . registerSCMProvider ( provider ) ;
293290 this . _repositories . set ( handle , repository ) ;
294291
295- const inputDisposable = repository . input . onDidChange ( value => this . _proxy . $onInputBoxValueChange ( handle , value ) ) ;
296- this . _inputDisposables . set ( handle , inputDisposable ) ;
292+ const disposable = combinedDisposable (
293+ Event . filter ( repository . onDidChangeSelection , selected => selected ) ( _ => this . _proxy . $setSelectedSourceControl ( handle ) ) ,
294+ repository . input . onDidChange ( value => this . _proxy . $onInputBoxValueChange ( handle , value ) )
295+ ) ;
296+
297+ if ( repository . selected ) {
298+ setTimeout ( ( ) => this . _proxy . $setSelectedSourceControl ( handle ) , 0 ) ;
299+ }
300+
301+ this . _repositoryDisposables . set ( handle , disposable ) ;
297302 }
298303
299304 $updateSourceControl ( handle : number , features : SCMProviderFeatures ) : void {
@@ -314,8 +319,8 @@ export class MainThreadSCM implements MainThreadSCMShape {
314319 return ;
315320 }
316321
317- this . _inputDisposables . get ( handle ) ! . dispose ( ) ;
318- this . _inputDisposables . delete ( handle ) ;
322+ this . _repositoryDisposables . get ( handle ) ! . dispose ( ) ;
323+ this . _repositoryDisposables . delete ( handle ) ;
319324
320325 repository . dispose ( ) ;
321326 this . _repositories . delete ( handle ) ;
@@ -422,12 +427,4 @@ export class MainThreadSCM implements MainThreadSCMShape {
422427 repository . input . validateInput = async ( ) => undefined ;
423428 }
424429 }
425-
426- private onDidChangeSelectedRepositories ( repositories : ISCMRepository [ ] ) : void {
427- const handles = repositories
428- . filter ( r => r . provider instanceof MainThreadSCMProvider )
429- . map ( r => ( r . provider as MainThreadSCMProvider ) . handle ) ;
430-
431- this . _proxy . $setSelectedSourceControls ( handles ) ;
432- }
433430}
0 commit comments