Skip to content

Commit 70233e1

Browse files
authored
refactor - update input context key handling logic (microsoft#259818)
1 parent 22b64f0 commit 70233e1

File tree

1 file changed

+8
-12
lines changed

1 file changed

+8
-12
lines changed

src/vs/workbench/browser/contextkeys.ts

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -219,10 +219,12 @@ export class WorkbenchContextKeysHandler extends Disposable {
219219

220220
this._register(this.editorGroupService.onDidChangeEditorPartOptions(() => this.updateEditorAreaContextKeys()));
221221

222-
223222
this._register(Event.runAndSubscribe(onDidRegisterWindow, ({ window, disposables }) => {
224-
const mutableDisposable = disposables.add(new MutableDisposable());
225-
disposables.add(addDisposableListener(window, EventType.FOCUS_IN, () => this.updateInputContextKeys(window.document, mutableDisposable), true));
223+
const onFocusDisposables = disposables.add(new MutableDisposable<DisposableStore>());
224+
disposables.add(addDisposableListener(window, EventType.FOCUS_IN, () => {
225+
onFocusDisposables.value = new DisposableStore();
226+
this.updateInputContextKeys(window.document, onFocusDisposables.value);
227+
}, true));
226228
}, { window: mainWindow, disposables: this._store }));
227229

228230
this._register(this.contextService.onDidChangeWorkbenchState(() => this.updateWorkbenchStateContextKey()));
@@ -309,7 +311,7 @@ export class WorkbenchContextKeysHandler extends Disposable {
309311
this.editorTabsVisibleContext.set(this.editorGroupService.partOptions.showTabs === 'multiple');
310312
}
311313

312-
private updateInputContextKeys(ownerDocument: Document, mutableDisposable: MutableDisposable<any>): void {
314+
private updateInputContextKeys(ownerDocument: Document, disposables: DisposableStore): void {
313315

314316
function activeElementIsInput(): boolean {
315317
return !!ownerDocument.activeElement && isEditableElement(ownerDocument.activeElement);
@@ -318,14 +320,8 @@ export class WorkbenchContextKeysHandler extends Disposable {
318320
const isInputFocused = activeElementIsInput();
319321
this.inputFocusedContext.set(isInputFocused);
320322

321-
322-
const store = new DisposableStore();
323-
mutableDisposable.value = store;
324-
325-
326323
if (isInputFocused) {
327-
328-
const tracker = store.add(trackFocus(ownerDocument.activeElement as HTMLElement));
324+
const tracker = disposables.add(trackFocus(ownerDocument.activeElement as HTMLElement));
329325
Event.once(tracker.onDidBlur)(() => {
330326

331327
// Ensure we are only updating the context key if we are
@@ -341,7 +337,7 @@ export class WorkbenchContextKeysHandler extends Disposable {
341337
}
342338

343339
tracker.dispose();
344-
}, undefined, store);
340+
}, undefined, disposables);
345341
}
346342
}
347343

0 commit comments

Comments
 (0)