From 2416f60c9229320ace2fa948849b4e6f6a15b9b3 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Thu, 23 Mar 2017 07:00:56 -0700 Subject: [PATCH] Fix issue in resolveUserBinding --- .../common/macLinuxKeyboardMapper.ts | 16 ++++++++----- .../macLinuxFallbackKeyboardMapper.test.ts | 24 ++++++++++++++++++- .../test/macLinuxKeyboardMapper.test.ts | 22 +++++++++++++++++ .../test/windowsKeyboardMapper.test.ts | 22 +++++++++++++++++ 4 files changed, 77 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts b/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts index ce480258310..b38fdd9d369 100644 --- a/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts +++ b/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts @@ -932,17 +932,21 @@ export class MacLinuxKeyboardMapper implements IKeyboardMapper { return this.simpleKeybindingToScanCodeBinding(binding); } - public resolveUserBinding(firstPart: SimpleKeybinding | ScanCodeBinding, chordPart: SimpleKeybinding | ScanCodeBinding): ResolvedKeybinding[] { - const firstParts = this._resolveSimpleUserBinding(firstPart); - const chordParts = this._resolveSimpleUserBinding(chordPart); + public resolveUserBinding(_firstPart: SimpleKeybinding | ScanCodeBinding, _chordPart: SimpleKeybinding | ScanCodeBinding): ResolvedKeybinding[] { + const firstParts = this._resolveSimpleUserBinding(_firstPart); + const chordParts = this._resolveSimpleUserBinding(_chordPart); let result: NativeResolvedKeybinding[] = [], resultLen = 0; for (let i = 0, len = firstParts.length; i < len; i++) { const firstPart = firstParts[i]; - for (let j = 0, lenJ = chordParts.length; j < lenJ; j++) { - const chordPart = chordParts[j]; + if (_chordPart) { + for (let j = 0, lenJ = chordParts.length; j < lenJ; j++) { + const chordPart = chordParts[j]; - result[resultLen++] = new NativeResolvedKeybinding(this, this._OS, firstPart, chordPart); + result[resultLen++] = new NativeResolvedKeybinding(this, this._OS, firstPart, chordPart); + } + } else { + result[resultLen++] = new NativeResolvedKeybinding(this, this._OS, firstPart, null); } } return result; diff --git a/src/vs/workbench/services/keybinding/test/macLinuxFallbackKeyboardMapper.test.ts b/src/vs/workbench/services/keybinding/test/macLinuxFallbackKeyboardMapper.test.ts index d309e684d7f..dadd4fbf784 100644 --- a/src/vs/workbench/services/keybinding/test/macLinuxFallbackKeyboardMapper.test.ts +++ b/src/vs/workbench/services/keybinding/test/macLinuxFallbackKeyboardMapper.test.ts @@ -119,7 +119,7 @@ suite('keyboardMapper - MAC fallback', () => { }); }); -suite('keyboardMapper - MAC fallback', () => { +suite('keyboardMapper - LINUX fallback', () => { let mapper = new MacLinuxFallbackKeyboardMapper({}, OperatingSystem.Linux); @@ -224,4 +224,26 @@ suite('keyboardMapper - MAC fallback', () => { }] ); }); + + test('resolveUserBinding Ctrl+[Comma]', () => { + assertResolveUserBinding( + mapper, + new ScanCodeBinding(true, false, false, false, ScanCode.Comma), + null, + [{ + label: 'Ctrl+,', + ariaLabel: 'Control+,', + HTMLLabel: [_simpleHTMLLabel(['Ctrl', ','])], + electronAccelerator: 'Ctrl+,', + userSettingsLabel: 'ctrl+,', + isWYSIWYG: true, + isChord: false, + hasCtrlModifier: true, + hasShiftModifier: false, + hasAltModifier: false, + hasMetaModifier: false, + dispatchParts: ['ctrl+,', null], + }] + ); + }); }); diff --git a/src/vs/workbench/services/keybinding/test/macLinuxKeyboardMapper.test.ts b/src/vs/workbench/services/keybinding/test/macLinuxKeyboardMapper.test.ts index fdd8586824d..00e81a47693 100644 --- a/src/vs/workbench/services/keybinding/test/macLinuxKeyboardMapper.test.ts +++ b/src/vs/workbench/services/keybinding/test/macLinuxKeyboardMapper.test.ts @@ -1232,6 +1232,28 @@ suite('keyboardMapper - LINUX en_us', () => { }] ); }); + + test('resolveUserBinding Ctrl+[Comma]', () => { + assertResolveUserBinding( + mapper, + new ScanCodeBinding(true, false, false, false, ScanCode.Comma), + null, + [{ + label: 'Ctrl+,', + ariaLabel: 'Control+,', + HTMLLabel: [_simpleHTMLLabel(['Ctrl', ','])], + electronAccelerator: 'Ctrl+,', + userSettingsLabel: 'ctrl+,', + isWYSIWYG: true, + isChord: false, + hasCtrlModifier: true, + hasShiftModifier: false, + hasAltModifier: false, + hasMetaModifier: false, + dispatchParts: ['ctrl+[Comma]', null], + }] + ); + }); }); function _assertKeybindingTranslation(mapper: MacLinuxKeyboardMapper, OS: OperatingSystem, kb: number, _expected: string | string[]): void { diff --git a/src/vs/workbench/services/keybinding/test/windowsKeyboardMapper.test.ts b/src/vs/workbench/services/keybinding/test/windowsKeyboardMapper.test.ts index 146f1760b3b..accb336aa72 100644 --- a/src/vs/workbench/services/keybinding/test/windowsKeyboardMapper.test.ts +++ b/src/vs/workbench/services/keybinding/test/windowsKeyboardMapper.test.ts @@ -430,4 +430,26 @@ suite('keyboardMapper - WINDOWS en_us', () => { }] ); }); + + test('resolveUserBinding Ctrl+[Comma]', () => { + assertResolveUserBinding( + mapper, + new ScanCodeBinding(true, false, false, false, ScanCode.Comma), + null, + [{ + label: 'Ctrl+,', + ariaLabel: 'Control+,', + HTMLLabel: [_simpleHTMLLabel(['Ctrl', ','])], + electronAccelerator: 'Ctrl+,', + userSettingsLabel: 'ctrl+,', + isWYSIWYG: true, + isChord: false, + hasCtrlModifier: true, + hasShiftModifier: false, + hasAltModifier: false, + hasMetaModifier: false, + dispatchParts: ['ctrl+,', null], + }] + ); + }); }); -- GitLab