Add option to menu to render without roles

This commit is contained in:
TC
2021-03-31 20:18:20 +02:00
parent 36864b4c2f
commit 400a2a9bab
2 changed files with 44 additions and 43 deletions

52
menu.js
View File

@ -20,7 +20,7 @@ const pluginEnabledMenu = (plugin, label = "") => ({
},
});
const mainMenuTemplate = (win) => [
const mainMenuTemplate = (win, withRoles = true) => [
{
label: "Plugins",
submenu: [
@ -191,14 +191,48 @@ const mainMenuTemplate = (win) => [
},
{
label: "View",
submenu: [
{ role: "reload" },
{ role: "forceReload" },
{ type: "separator" },
{ role: "zoomIn" },
{ role: "zoomOut" },
{ role: "resetZoom" },
],
submenu: withRoles
? [
{ role: "reload" },
{ role: "forceReload" },
{ type: "separator" },
{ role: "zoomIn" },
{ role: "zoomOut" },
{ role: "resetZoom" },
]
: [
{
label: "Reload",
click: () => {
win.webContents.reload();
},
},
{
label: "Force Reload",
click: () => {
win.webContents.reloadIgnoringCache();
},
},
{ type: "separator" },
{
label: "Zoom In",
click: () => {
win.webContents.setZoomLevel(win.webContents.getZoomLevel() + 1);
},
},
{
label: "Zoom Out",
click: () => {
win.webContents.setZoomLevel(win.webContents.getZoomLevel() - 1);
},
},
{
label: "Reset Zoom",
click: () => {
win.webContents.setZoomLevel(0);
},
},
],
},
{
label: "Navigation",

View File

@ -9,7 +9,7 @@ var { mainMenuTemplate } = require("../../menu");
const originTemplate = mainMenuTemplate;
mainMenuTemplate = function (winHook) {
//get template
let template = originTemplate(winHook);
let template = originTemplate(winHook, false);
//fix checkbox and roles
fixMenu(template);
//return as normal
@ -67,42 +67,9 @@ function fixMenu(template) {
checkCheckbox(itemClicked);
};
}
//customize roles
else if (item.role != null) {
fixRoles(item)
}
}
}
//custom menu doesn't support roles, so they get injected manually
function fixRoles(MenuItem) {
switch (MenuItem.role) {
case 'reload':
MenuItem.label = 'Reload';
MenuItem.click = () => { win.webContents.reload(); }
break;
case 'forceReload':
MenuItem.label = 'Force Reload';
MenuItem.click = () => { win.webContents.reloadIgnoringCache(); }
break;
case 'zoomIn':
MenuItem.label = 'Zoom In';
MenuItem.click = () => { win.webContents.setZoomLevel(win.webContents.getZoomLevel() + 1); }
break;
case 'zoomOut':
MenuItem.label = 'Zoom Out';
MenuItem.click = () => { win.webContents.setZoomLevel(win.webContents.getZoomLevel() - 1); }
break;
case 'resetZoom':
MenuItem.label = 'Reset Zoom';
MenuItem.click = () => { win.webContents.setZoomLevel(0); }
break;
default:
console.log(`Error fixing MenuRoles: "${MenuItem.role}" was not expected`);
}
delete MenuItem.role;
}
function checkCheckbox(item) {
//check item
item.checked = !item.checked;