File tree Expand file tree Collapse file tree 2 files changed +11
-3
lines changed
src/vs/platform/contextkey Expand file tree Collapse file tree 2 files changed +11
-3
lines changed Original file line number Diff line number Diff line change @@ -225,6 +225,9 @@ class SimpleContextKeyChangeEvent implements IContextKeyChangeEvent {
225
225
affectsSome ( keys : IReadableSet < string > ) : boolean {
226
226
return keys . has ( this . key ) ;
227
227
}
228
+ allKeysContainedIn ( keys : IReadableSet < string > ) : boolean {
229
+ return this . affectsSome ( keys ) ;
230
+ }
228
231
}
229
232
230
233
class ArrayContextKeyChangeEvent implements IContextKeyChangeEvent {
@@ -237,6 +240,9 @@ class ArrayContextKeyChangeEvent implements IContextKeyChangeEvent {
237
240
}
238
241
return false ;
239
242
}
243
+ allKeysContainedIn ( keys : IReadableSet < string > ) : boolean {
244
+ return this . keys . every ( key => keys . has ( key ) ) ;
245
+ }
240
246
}
241
247
242
248
class CompositeContextKeyChangeEvent implements IContextKeyChangeEvent {
@@ -249,12 +255,13 @@ class CompositeContextKeyChangeEvent implements IContextKeyChangeEvent {
249
255
}
250
256
return false ;
251
257
}
258
+ allKeysContainedIn ( keys : IReadableSet < string > ) : boolean {
259
+ return this . events . every ( evt => evt . allKeysContainedIn ( keys ) ) ;
260
+ }
252
261
}
253
262
254
263
function allEventKeysInContext ( event : IContextKeyChangeEvent , context : Record < string , any > ) : boolean {
255
- return ( event instanceof ArrayContextKeyChangeEvent && event . keys . every ( key => key in context ) ) ||
256
- ( event instanceof SimpleContextKeyChangeEvent && event . key in context ) ||
257
- ( event instanceof CompositeContextKeyChangeEvent && event . events . every ( e => allEventKeysInContext ( e , context ) ) ) ;
264
+ return event . allKeysContainedIn ( new Set ( Object . keys ( context ) ) ) ;
258
265
}
259
266
260
267
export abstract class AbstractContextKeyService implements IContextKeyService {
Original file line number Diff line number Diff line change @@ -1597,6 +1597,7 @@ export interface IReadableSet<T> {
1597
1597
1598
1598
export interface IContextKeyChangeEvent {
1599
1599
affectsSome ( keys : IReadableSet < string > ) : boolean ;
1600
+ allKeysContainedIn ( keys : IReadableSet < string > ) : boolean ;
1600
1601
}
1601
1602
1602
1603
export interface IContextKeyService {
You can’t perform that action at this time.
0 commit comments