refactor: make applicationMenu a property on app (#17361)

This commit is contained in:
Shelley Vohr 2019-04-02 13:36:57 -07:00 committed by GitHub
parent d412582f72
commit 0431997c8d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 1 deletions

View file

@ -1332,6 +1332,11 @@ Sets the `image` associated with this dock icon.
## Properties ## Properties
### `app.applicationMenu`
A `Menu` property that return [`Menu`](menu.md) if one has been set and `null` otherwise.
Users can pass a [Menu](menu.md) to set this property.
### `app.isPackaged` ### `app.isPackaged`
A `Boolean` property that returns `true` if the app is packaged, `false` otherwise. For many apps, this property can be used to distinguish development and production environments. A `Boolean` property that returns `true` if the app is packaged, `false` otherwise. For many apps, this property can be used to distinguish development and production environments.

View file

@ -19,9 +19,11 @@ Object.setPrototypeOf(App.prototype, EventEmitter.prototype)
EventEmitter.call(app as any) EventEmitter.call(app as any)
Object.assign(app, { Object.assign(app, {
// TODO(codebytere): remove in 7.0
setApplicationMenu (menu: Electron.Menu | null) { setApplicationMenu (menu: Electron.Menu | null) {
return Menu.setApplicationMenu(menu) return Menu.setApplicationMenu(menu)
}, },
// TODO(codebytere): remove in 7.0
getApplicationMenu () { getApplicationMenu () {
return Menu.getApplicationMenu() return Menu.getApplicationMenu()
}, },
@ -38,6 +40,17 @@ Object.assign(app, {
app.getFileIcon = deprecate.promisify(app.getFileIcon) app.getFileIcon = deprecate.promisify(app.getFileIcon)
// we define this here because it'd be overly complicated to
// do in native land
Object.defineProperty(app, 'applicationMenu', {
get () {
return Menu.getApplicationMenu()
},
set (menu: Electron.Menu | null) {
return Menu.setApplicationMenu(menu)
}
})
app.isPackaged = (() => { app.isPackaged = (() => {
const execFile = path.basename(process.execPath).toLowerCase() const execFile = path.basename(process.execPath).toLowerCase()
if (process.platform === 'win32') { if (process.platform === 'win32') {

View file

@ -12,7 +12,7 @@ TopLevelWindow.prototype._init = function () {
// Simulate the application menu on platforms other than macOS. // Simulate the application menu on platforms other than macOS.
if (process.platform !== 'darwin') { if (process.platform !== 'darwin') {
const menu = app.getApplicationMenu() const menu = app.applicationMenu
if (menu) this.setMenu(menu) if (menu) this.setMenu(menu)
} }
} }

View file

@ -1232,6 +1232,12 @@ describe('app module', () => {
}) })
}) })
describe('app.applicationMenu', () => {
it('has the applicationMenu property', () => {
expect(app).to.have.property('applicationMenu')
})
})
describe('commandLine.hasSwitch', () => { describe('commandLine.hasSwitch', () => {
it('returns true when present', () => { it('returns true when present', () => {
app.commandLine.appendSwitch('foobar1') app.commandLine.appendSwitch('foobar1')