Merge pull request #6166 from electron/fullscreen-role

Add togglefullscreen menu item role
This commit is contained in:
Cheng Zhao 2016-06-22 00:58:39 +00:00 committed by GitHub
commit 85c163e58a
4 changed files with 13 additions and 11 deletions

View file

@ -39,6 +39,7 @@ Role kRolesMap[] = {
{ @selector(performClose:), "close" },
{ @selector(performZoom:), "zoom" },
{ @selector(terminate:), "quit" },
{ @selector(toggleFullScreen:), "togglefullscreen" },
};
} // namespace

View file

@ -107,18 +107,12 @@ app.once('ready', () => {
},
{
label: 'Toggle Full Screen',
accelerator: (() => {
return (process.platform === 'darwin') ? 'Ctrl+Command+F' : 'F11'
})(),
click (item, focusedWindow) {
if (focusedWindow) focusedWindow.setFullScreen(!focusedWindow.isFullScreen())
}
role: 'togglefullscreen',
accelerator: process.platform === 'darwin' ? 'Ctrl+Command+F' : 'F11'
},
{
label: 'Toggle Developer Tools',
accelerator: (() => {
return (process.platform === 'darwin') ? 'Alt+Command+I' : 'Ctrl+Shift+I'
})(),
accelerator: process.platform === 'darwin' ? 'Alt+Command+I' : 'Ctrl+Shift+I',
click (item, focusedWindow) {
if (focusedWindow) focusedWindow.toggleDevTools()
}

View file

@ -52,6 +52,7 @@ The `role` property can have following values:
* `minimize` - Minimize current window
* `close` - Close current window
* `quit`- Quit the application
* `togglefullscreen`- Toggle full screen mode on the current window
On macOS `role` can also have following additional values:

View file

@ -14,13 +14,17 @@ const rolesMap = {
minimize: 'minimize',
close: 'close',
delete: 'delete',
quit: 'quit'
quit: 'quit',
togglefullscreen: 'toggleFullScreen'
}
// Maps methods that should be called directly on the BrowserWindow instance
const methodInBrowserWindow = {
minimize: true,
close: true
close: true,
toggleFullScreen: function (window) {
window.setFullScreen(!window.isFullScreen())
}
}
const methodInApp = {
@ -78,6 +82,8 @@ const MenuItem = (function () {
const methodName = rolesMap[this.role]
if (methodInApp[methodName]) {
return app[methodName]()
} else if (typeof methodInBrowserWindow[methodName] === 'function') {
return methodInBrowserWindow[methodName](focusedWindow)
} else if (methodInBrowserWindow[methodName]) {
return focusedWindow[methodName]()
} else {