6
6
import { IAction } from '../../../../base/common/actions.js' ;
7
7
import { equals } from '../../../../base/common/arrays.js' ;
8
8
import { Emitter } from '../../../../base/common/event.js' ;
9
- import { DisposableStore , IDisposable , dispose } from '../../../../base/common/lifecycle.js' ;
9
+ import { DisposableStore , IDisposable , MutableDisposable , dispose } from '../../../../base/common/lifecycle.js' ;
10
10
import './media/scm.css' ;
11
11
import { localize } from '../../../../nls.js' ;
12
12
import { getActionBarActions } from '../../../../platform/actions/browser/menuEntryActionViewItem.js' ;
@@ -70,13 +70,14 @@ interface IContextualResourceMenuItem {
70
70
71
71
class SCMMenusItem implements IDisposable {
72
72
73
- private _resourceGroupMenu : IMenu | undefined ;
73
+ private readonly _resourceGroupMenu = new MutableDisposable < IMenu > ( ) ;
74
74
get resourceGroupMenu ( ) : IMenu {
75
- if ( ! this . _resourceGroupMenu ) {
76
- this . _resourceGroupMenu = this . menuService . createMenu ( MenuId . SCMResourceGroupContext , this . contextKeyService ) ;
77
- }
75
+ const contextKeyService = this . contextKeyService . createOverlay ( [
76
+ [ 'scmResourceGroupResourceCount' , this . group . resources . length ] ,
77
+ ] ) ;
78
78
79
- return this . _resourceGroupMenu ;
79
+ this . _resourceGroupMenu . value = this . menuService . createMenu ( MenuId . SCMResourceGroupContext , contextKeyService ) ;
80
+ return this . _resourceGroupMenu . value ;
80
81
}
81
82
82
83
private _resourceFolderMenu : IMenu | undefined ;
@@ -92,8 +93,9 @@ class SCMMenusItem implements IDisposable {
92
93
private contextualResourceMenus : Map < string /* contextValue */ , IContextualResourceMenuItem > | undefined ;
93
94
94
95
constructor (
95
- private contextKeyService : IContextKeyService ,
96
- private menuService : IMenuService
96
+ private readonly group : ISCMResourceGroup ,
97
+ private readonly contextKeyService : IContextKeyService ,
98
+ private readonly menuService : IMenuService
97
99
) { }
98
100
99
101
getResourceMenu ( resource : ISCMResource ) : IMenu {
@@ -206,7 +208,7 @@ export class SCMRepositoryMenus implements ISCMRepositoryMenus, IDisposable {
206
208
[ 'multiDiffEditorEnableViewChanges' , group . multiDiffEditorEnableViewChanges ] ,
207
209
] ) ;
208
210
209
- result = new SCMMenusItem ( contextKeyService , this . menuService ) ;
211
+ result = new SCMMenusItem ( group , contextKeyService , this . menuService ) ;
210
212
this . resourceGroupMenusItems . set ( group , result ) ;
211
213
}
212
214
0 commit comments