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

Fixes #4046: [Themes] Holding Up or Down key when selecting a theme hangs the application

上级 1c469f4f
......@@ -16,6 +16,7 @@ import workbenchActionRegistry = require('vs/workbench/common/actionRegistry');
import {IQuickOpenService, IPickOpenEntry} from 'vs/workbench/services/quickopen/common/quickOpenService';
import {IWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
import {IThemeService, IThemeData, DEFAULT_THEME_ID} from 'vs/workbench/services/themes/common/themeService';
import {RunOnceScheduler} from 'vs/base/common/async';
import {ipcRenderer as ipc} from 'electron';
......@@ -58,7 +59,7 @@ class SelectThemeAction extends actions.Action {
}
});
let pickTheme = pick => {
let selectTheme = pick => {
if (pick) {
let themeId = pick.id;
if (!contributedThemesById[themeId]) {
......@@ -78,10 +79,21 @@ class SelectThemeAction extends actions.Action {
ipc.send('vscode:changeTheme', currentTheme);
}
}
return winjs.TPromise.as(null);
};
return this.quickOpenService.pick(picks, { placeHolder: nls.localize('themes.selectTheme', "Select Color Theme"), autoFocus: { autoFocusIndex: selectedPickIndex } }).then(pickTheme, null, pickTheme);
let themeToPreview : IPickOpenEntry = null;
let previewThemeScheduler = new RunOnceScheduler(() => {
selectTheme(themeToPreview);
}, 200);
let previewTheme = pick => {
themeToPreview = pick;
previewThemeScheduler.schedule();
};
let pickTheme = pick => {
previewThemeScheduler.dispose();
selectTheme(pick);
};
return this.quickOpenService.pick(picks, { placeHolder: nls.localize('themes.selectTheme', "Select Color Theme"), autoFocus: { autoFocusIndex: selectedPickIndex } }).then(pickTheme, null, previewTheme);
});
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册