Skip to content

Commit 7f9018c

Browse files
authored
debt - fix typings in windowActions.ts (microsoft#211878 (microsoft#224699)
)
1 parent cc626a1 commit 7f9018c

File tree

1 file changed

+28
-8
lines changed

1 file changed

+28
-8
lines changed

src/vs/workbench/electron-sandbox/actions/windowActions.ts

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { getZoomLevel } from 'vs/base/browser/browser';
1212
import { FileKind } from 'vs/platform/files/common/files';
1313
import { IModelService } from 'vs/editor/common/services/model';
1414
import { ILanguageService } from 'vs/editor/common/languages/language';
15-
import { IQuickInputService, IQuickInputButton, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput';
15+
import { IQuickInputService, IQuickInputButton, IQuickPickItem, QuickPickInput } from 'vs/platform/quickinput/common/quickInput';
1616
import { getIconClasses } from 'vs/editor/common/services/getIconClasses';
1717
import { ICommandHandler } from 'vs/platform/commands/common/commands';
1818
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
@@ -253,11 +253,17 @@ abstract class BaseSwitchWindow extends Action2 {
253253
readonly windowId: number;
254254
}
255255

256-
const picks: Array<IWindowPickItem> = [];
256+
function isWindowPickItem(candidate: unknown): candidate is IWindowPickItem {
257+
const windowPickItem = candidate as IWindowPickItem | undefined;
258+
259+
return typeof windowPickItem?.windowId === 'number';
260+
}
261+
262+
const picks: Array<QuickPickInput<IWindowPickItem>> = [];
257263
for (const window of mainWindows) {
258264
const auxiliaryWindows = mapMainWindowToAuxiliaryWindows.get(window.id);
259265
if (mapMainWindowToAuxiliaryWindows.size > 0) {
260-
picks.push({ type: 'separator', payload: -1, label: auxiliaryWindows ? localize('windowGroup', "window group") : undefined } as unknown as IWindowPickItem);
266+
picks.push({ type: 'separator', label: auxiliaryWindows ? localize('windowGroup', "window group") : undefined });
261267
}
262268

263269
const resource = window.filename ? URI.file(window.filename) : isSingleFolderWorkspaceIdentifier(window.workspace) ? window.workspace.uri : isWorkspaceIdentifier(window.workspace) ? window.workspace.configPath : undefined;
@@ -286,13 +292,27 @@ abstract class BaseSwitchWindow extends Action2 {
286292
}
287293
}
288294

289-
const placeHolder = localize('switchWindowPlaceHolder', "Select a window to switch to");
290-
const autoFocusIndex = (picks.indexOf(picks.filter(pick => pick.windowId === currentWindowId)[0]) + 1) % picks.length;
291-
292295
const pick = await quickInputService.pick(picks, {
293296
contextKey: 'inWindowsPicker',
294-
activeItem: picks[autoFocusIndex],
295-
placeHolder,
297+
activeItem: (() => {
298+
for (let i = 0; i < picks.length; i++) {
299+
const pick = picks[i];
300+
if (isWindowPickItem(pick) && pick.windowId === currentWindowId) {
301+
let nextPick = picks[i + 1]; // try to select next window unless it's a separator
302+
if (isWindowPickItem(nextPick)) {
303+
return nextPick;
304+
}
305+
306+
nextPick = picks[i + 2]; // otherwise try to select the next window after the separator
307+
if (isWindowPickItem(nextPick)) {
308+
return nextPick;
309+
}
310+
}
311+
}
312+
313+
return undefined;
314+
})(),
315+
placeHolder: localize('switchWindowPlaceHolder', "Select a window to switch to"),
296316
quickNavigate: this.isQuickNavigate() ? { keybindings: keybindingService.lookupKeybindings(this.desc.id) } : undefined,
297317
hideInput: this.isQuickNavigate(),
298318
onDidTriggerItemButton: async context => {

0 commit comments

Comments
 (0)