Back button constant (#49340)

This commit is contained in:
Christof Marti
2018-06-18 17:41:38 +02:00
parent 2afaa0d682
commit c361c4a31c
9 changed files with 82 additions and 11 deletions

View File

@@ -170,14 +170,20 @@ export class MainThreadQuickOpen implements MainThreadQuickOpenShape {
session.hide();
}
} else if (param === 'buttons') {
params.buttons.forEach(button => {
const iconPath = button.iconPath;
iconPath.dark = URI.revive(iconPath.dark);
if (iconPath.light) {
iconPath.light = URI.revive(iconPath.light);
session[param] = params.buttons.map(button => {
if (button.handle === -1) {
return this._quickInputService.backButton;
}
const { iconPath, tooltip, handle } = button;
return {
iconPath: {
dark: URI.revive(iconPath.dark),
light: iconPath.light && URI.revive(iconPath.light)
},
tooltip,
handle
};
});
session[param] = params[param];
} else {
session[param] = params[param];
}

View File

@@ -455,6 +455,11 @@ export function createApiFactory(
registerProtocolHandler: proposedApiFunction(extension, (handler: vscode.ProtocolHandler) => {
return extHostUrls.registerProtocolHandler(extension.id, handler);
}),
get quickInputBackButton() {
return proposedApiFunction(extension, (): vscode.QuickInputButton => {
return extHostQuickOpen.backButton;
})();
},
createQuickPick: proposedApiFunction(extension, (): vscode.QuickPick => {
return extHostQuickOpen.createQuickPick(extension.id);
}),

View File

@@ -16,6 +16,8 @@ import { ExtHostQuickOpenShape, IMainContext, MainContext, MainThreadQuickOpenSh
import URI from 'vs/base/common/uri';
import { ThemeIcon } from 'vs/workbench/api/node/extHostTypes';
const backButton: QuickInputButton = { iconPath: 'back.svg' };
export type Item = string | QuickPickItem;
export class ExtHostQuickOpen implements ExtHostQuickOpenShape {
@@ -151,6 +153,8 @@ export class ExtHostQuickOpen implements ExtHostQuickOpenShape {
// ---- QuickInput
backButton = backButton;
createQuickPick(extensionId: string): QuickPick {
const session = new ExtHostQuickPick(this._proxy, extensionId, () => this._sessions.delete(session._id));
this._sessions.set(session._id, session);
@@ -324,13 +328,14 @@ class ExtHostQuickInput implements QuickInput {
this._buttons = buttons;
this._handlesToButtons.clear();
buttons.forEach((button, i) => {
this._handlesToButtons.set(i, button);
const handle = button === backButton ? -1 : i;
this._handlesToButtons.set(handle, button);
});
this.update({
buttons: buttons.map<TransferQuickInputButton>((button, i) => ({
iconPath: getIconUris(button.iconPath),
tooltip: button.tooltip,
handle: i,
handle: button === backButton ? -1 : i,
}))
});
}