Skip to content

Commit 33db9a5

Browse files
committed
Fix layering issue
1 parent b2ea188 commit 33db9a5

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

src/vs/base/parts/quickinput/browser/quickInput.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import { isIOS } from 'vs/base/common/platform';
2929
import Severity from 'vs/base/common/severity';
3030
import { isString, withNullAsUndefined } from 'vs/base/common/types';
3131
import { getIconClass } from 'vs/base/parts/quickinput/browser/quickInputUtils';
32-
import { IInputBox, IInputOptions, IKeyMods, IPickOptions, IQuickInput, IQuickInputButton, IQuickInputHideEvent, IQuickNavigateConfiguration, IQuickPick, IQuickPickDidAcceptEvent, IQuickPickItem, IQuickPickItemButtonEvent, IQuickPickSeparator, IQuickPickWillAcceptEvent, ItemActivation, NO_KEY_MODS, QuickInputHideReason, QuickPickInput } from 'vs/base/parts/quickinput/common/quickInput';
32+
import { IInputBox, IInputOptions, IKeyMods, IPickOptions, IQuickInput, IQuickInputButton, IQuickInputHideEvent, IQuickInputToggle, IQuickNavigateConfiguration, IQuickPick, IQuickPickDidAcceptEvent, IQuickPickItem, IQuickPickItemButtonEvent, IQuickPickSeparator, IQuickPickWillAcceptEvent, ItemActivation, NO_KEY_MODS, QuickInputHideReason, QuickPickInput } from 'vs/base/parts/quickinput/common/quickInput';
3333
import 'vs/css!./media/quickInput';
3434
import { localize } from 'vs/nls';
3535
import { QuickInputBox } from './quickInputBox';
@@ -741,8 +741,12 @@ class QuickPick<T extends IQuickPickItem> extends QuickInput implements IQuickPi
741741
this.update();
742742
}
743743

744-
set additionalToggles(toggles: Toggle[] | undefined) {
745-
this.ui.inputBox.additionalToggles = toggles;
744+
set additionalToggles(toggles: IQuickInputToggle[] | undefined) {
745+
// HACK: Filter out toggles here that are not concrete Toggle objects. This is to workaround
746+
// a layering issue as quick input's interface is in common but Toggle is in browser and
747+
// it requires a HTMLElement on its interface
748+
const concreteToggles = toggles?.filter(opts => opts instanceof Toggle) as Toggle[];
749+
this.ui.inputBox.additionalToggles = concreteToggles;
746750
}
747751

748752
onDidChangeSelection = this.onDidChangeSelectionEmitter.event;

src/vs/base/parts/quickinput/common/quickInput.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { Toggle } from 'vs/base/browser/ui/toggle/toggle';
76
import { Event } from 'vs/base/common/event';
87
import { IMatch } from 'vs/base/common/filters';
98
import { IItemAccessor } from 'vs/base/common/fuzzyScorer';
@@ -342,8 +341,14 @@ export interface IQuickPick<T extends IQuickPickItem> extends IQuickInput {
342341

343342
hideCheckAll: boolean;
344343

345-
// TODO: Fix layering issue
346-
additionalToggles: Toggle[] | undefined;
344+
/**
345+
* A set of `Toggle` objects to add to the input box.
346+
*/
347+
additionalToggles: IQuickInputToggle[] | undefined;
348+
}
349+
350+
export interface IQuickInputToggle {
351+
onChange: Event<boolean /* via keyboard */>;
347352
}
348353

349354
export interface IInputBox extends IQuickInput {

0 commit comments

Comments
 (0)