提交 b3a8aa85 编写于 作者: M Martin Aeschlimann

[theme] Copy input from theme picker when no theme was found. Fixes #40518

上级 d2baccdf
......@@ -59,17 +59,10 @@ export class SelectColorThemeAction extends Action {
}
selectThemeTimeout = window.setTimeout(() => {
selectThemeTimeout = undefined;
let themeId = theme.id;
if (typeof theme.id === 'undefined') { // 'pick in marketplace' entry
if (applyTheme) {
openExtensionViewlet(this.viewletService, 'category:themes ');
}
themeId = currentTheme.id;
}
const themeId = theme && theme.id !== undefined ? theme.id : currentTheme.id;
let target: ConfigurationTarget | undefined = undefined;
if (applyTheme) {
let confValue = this.configurationService.inspect(COLOR_THEME_SETTING);
const confValue = this.configurationService.inspect(COLOR_THEME_SETTING);
target = typeof confValue.workspace !== 'undefined' ? ConfigurationTarget.WORKSPACE : ConfigurationTarget.USER;
}
......@@ -82,15 +75,35 @@ export class SelectColorThemeAction extends Action {
}, applyTheme ? 0 : 200);
};
const placeHolder = localize('themes.selectTheme', "Select Color Theme (Up/Down Keys to Preview)");
const autoFocusIndex = firstIndex(picks, p => isItem(p) && p.id === currentTheme.id);
const activeItem: ThemeItem = picks[autoFocusIndex] as ThemeItem;
const chooseTheme = (theme: ThemeItem) => selectTheme(theme || currentTheme, true);
const tryTheme = (theme: ThemeItem) => selectTheme(theme, false);
return this.quickInputService.pick(picks, { placeHolder, activeItem, onDidFocus: tryTheme })
.then(chooseTheme);
return new Promise((s, _) => {
let isCompleted = false;
const autoFocusIndex = firstIndex(picks, p => isItem(p) && p.id === currentTheme.id);
const quickpick = this.quickInputService.createQuickPick<ThemeItem>();
quickpick.items = picks;
quickpick.placeholder = localize('themes.selectTheme', "Select Color Theme (Up/Down Keys to Preview)");
quickpick.activeItems = [picks[autoFocusIndex] as ThemeItem];
quickpick.canSelectMany = false;
quickpick.onDidAccept(_ => {
const theme = quickpick.activeItems[0];
if (!theme || typeof theme.id === 'undefined') { // 'pick in marketplace' entry
openExtensionViewlet(this.viewletService, `category:themes ${quickpick.value}`);
} else {
selectTheme(theme, true);
}
isCompleted = true;
quickpick.hide();
s();
});
quickpick.onDidChangeActive(themes => selectTheme(themes[0], false));
quickpick.onDidHide(() => {
if (!isCompleted) {
selectTheme(currentTheme, true);
s();
}
});
quickpick.show();
});
});
}
}
......@@ -131,16 +144,10 @@ class SelectIconThemeAction extends Action {
}
selectThemeTimeout = window.setTimeout(() => {
selectThemeTimeout = undefined;
let themeId = theme.id;
if (typeof theme.id === 'undefined') { // 'pick in marketplace' entry
if (applyTheme) {
openExtensionViewlet(this.viewletService, 'tag:icon-theme ');
}
themeId = currentTheme.id;
}
const themeId = theme && theme.id !== undefined ? theme.id : currentTheme.id;
let target: ConfigurationTarget | undefined = undefined;
if (applyTheme) {
let confValue = this.configurationService.inspect(ICON_THEME_SETTING);
const confValue = this.configurationService.inspect(ICON_THEME_SETTING);
target = typeof confValue.workspace !== 'undefined' ? ConfigurationTarget.WORKSPACE : ConfigurationTarget.USER;
}
this.themeService.setFileIconTheme(themeId, target).then(undefined,
......@@ -152,14 +159,35 @@ class SelectIconThemeAction extends Action {
}, applyTheme ? 0 : 200);
};
const placeHolder = localize('themes.selectIconTheme', "Select File Icon Theme");
const autoFocusIndex = firstIndex(picks, p => isItem(p) && p.id === currentTheme.id);
const activeItem: ThemeItem = picks[autoFocusIndex] as ThemeItem;
const chooseTheme = (theme: ThemeItem) => selectTheme(theme || currentTheme, true);
const tryTheme = (theme: ThemeItem) => selectTheme(theme, false);
return this.quickInputService.pick(picks, { placeHolder, activeItem, onDidFocus: tryTheme })
.then(chooseTheme);
return new Promise((s, _) => {
let isCompleted = false;
const autoFocusIndex = firstIndex(picks, p => isItem(p) && p.id === currentTheme.id);
const quickpick = this.quickInputService.createQuickPick<ThemeItem>();
quickpick.items = picks;
quickpick.placeholder = localize('themes.selectIconTheme', "Select File Icon Theme");
quickpick.activeItems = [picks[autoFocusIndex] as ThemeItem];
quickpick.canSelectMany = false;
quickpick.onDidAccept(_ => {
const theme = quickpick.activeItems[0];
if (!theme || typeof theme.id === 'undefined') { // 'pick in marketplace' entry
openExtensionViewlet(this.viewletService, `tag:icon-theme ${quickpick.value}`);
} else {
selectTheme(theme, true);
}
isCompleted = true;
quickpick.hide();
s();
});
quickpick.onDidChangeActive(themes => selectTheme(themes[0], false));
quickpick.onDidHide(() => {
if (!isCompleted) {
selectTheme(currentTheme, true);
s();
}
});
quickpick.show();
});
});
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册