fix: don't append Shift modifier text twice to accelerators (#15400)
* fix: don't append Shift modifier text twice to accelerators * style: use the new way of creating patches * test: add menu item accelerator display tests * fix: allocate accelerator on the stack * fix: adjust tests to match expected behavior on mac
This commit is contained in:
parent
1d81d1a706
commit
aa6f7a5d9f
4 changed files with 78 additions and 27 deletions
|
@ -6,7 +6,7 @@ const { BrowserWindow, app, Menu, MenuItem } = remote
|
|||
const roles = require('../lib/browser/api/menu-item-roles')
|
||||
const { closeWindow } = require('./window-helpers')
|
||||
|
||||
const { expect } = chai
|
||||
const { expect, assert } = chai
|
||||
chai.use(dirtyChai)
|
||||
|
||||
describe('MenuItems', () => {
|
||||
|
@ -389,4 +389,68 @@ describe('MenuItems', () => {
|
|||
expect(menu.items[0].submenu.items[0].overrideProperty).to.be.a('function')
|
||||
})
|
||||
})
|
||||
|
||||
describe('MenuItem accelerators', () => {
|
||||
const isDarwin = () => {
|
||||
return (process.platform === 'darwin')
|
||||
}
|
||||
|
||||
it('should display modifiers correctly for simple keys', done => {
|
||||
const menu = Menu.buildFromTemplate([
|
||||
{ label: 'text', accelerator: 'CmdOrCtrl+A' },
|
||||
{ label: 'text', accelerator: 'Shift+A' },
|
||||
{ label: 'text', accelerator: 'Alt+A' }
|
||||
])
|
||||
|
||||
assert.strictEqual(menu.getAcceleratorTextAt(0),
|
||||
isDarwin() ? '⌘A' : 'Ctrl+A')
|
||||
assert.strictEqual(menu.getAcceleratorTextAt(1),
|
||||
isDarwin() ? '⇧A' : 'Shift+A')
|
||||
assert.strictEqual(menu.getAcceleratorTextAt(2),
|
||||
isDarwin() ? '⌥A' : 'Alt+A')
|
||||
done()
|
||||
})
|
||||
|
||||
it('should display modifiers correctly for special keys', done => {
|
||||
const menu = Menu.buildFromTemplate([
|
||||
{ label: 'text', accelerator: 'CmdOrCtrl+Tab' },
|
||||
{ label: 'text', accelerator: 'Shift+Tab' },
|
||||
{ label: 'text', accelerator: 'Alt+Tab' }
|
||||
])
|
||||
|
||||
assert.strictEqual(menu.getAcceleratorTextAt(0),
|
||||
isDarwin() ? '⌘⇥\u0000' : 'Ctrl+Tab')
|
||||
assert.strictEqual(menu.getAcceleratorTextAt(1),
|
||||
isDarwin() ? '⇧⇥\u0000' : 'Shift+Tab')
|
||||
assert.strictEqual(menu.getAcceleratorTextAt(2),
|
||||
isDarwin() ? '⌥⇥\u0000' : 'Alt+Tab')
|
||||
done()
|
||||
})
|
||||
|
||||
it('should not display modifiers twice', done => {
|
||||
const menu = Menu.buildFromTemplate([
|
||||
{ label: 'text', accelerator: 'Shift+Shift+A' },
|
||||
{ label: 'text', accelerator: 'Shift+Shift+Tab' }
|
||||
])
|
||||
|
||||
assert.strictEqual(menu.getAcceleratorTextAt(0),
|
||||
isDarwin() ? '⇧A' : 'Shift+A')
|
||||
assert.strictEqual(menu.getAcceleratorTextAt(1),
|
||||
isDarwin() ? '⇧⇥\u0000' : 'Shift+Tab')
|
||||
done()
|
||||
})
|
||||
|
||||
it('should display correctly for edge cases', done => {
|
||||
const menu = Menu.buildFromTemplate([
|
||||
{ label: 'text', accelerator: 'Control+Shift+=' },
|
||||
{ label: 'text', accelerator: 'Control+Plus' }
|
||||
])
|
||||
|
||||
assert.strictEqual(menu.getAcceleratorTextAt(0),
|
||||
isDarwin() ? '⌃⇧=' : 'Ctrl+Shift+=')
|
||||
assert.strictEqual(menu.getAcceleratorTextAt(1),
|
||||
isDarwin() ? '⌃⇧=' : 'Ctrl+Shift+=')
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue