From 77393c5324a67fb43dd73506dc0e636cfdd37119 Mon Sep 17 00:00:00 2001 From: TC Date: Fri, 2 Apr 2021 21:20:50 +0200 Subject: [PATCH] Replace click callback by override in custom menu --- menu.js | 18 +----------------- plugins/in-app-menu/back.js | 24 +++++++++++++++++++++--- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/menu.js b/menu.js index 563aa612..f641d184 100644 --- a/menu.js +++ b/menu.js @@ -20,12 +20,7 @@ const pluginEnabledMenu = (plugin, label = "") => ({ }, }); -const mainMenuTemplate = ( - win, - withRoles = true, - isTray = false, - clickCb = () => {} -) => [ +const mainMenuTemplate = (win, withRoles = true, isTray = false) => [ { label: "Plugins", submenu: [ @@ -69,7 +64,6 @@ const mainMenuTemplate = ( checked: config.get("options.autoUpdates"), click: (item) => { config.set("options.autoUpdates", item.checked); - clickCb(item); }, }, { @@ -78,7 +72,6 @@ const mainMenuTemplate = ( checked: config.get("options.disableHardwareAcceleration"), click: (item) => { config.set("options.disableHardwareAcceleration", item.checked); - clickCb(item); }, }, { @@ -87,7 +80,6 @@ const mainMenuTemplate = ( checked: config.get("options.restartOnConfigChanges"), click: (item) => { config.set("options.restartOnConfigChanges", item.checked); - clickCb(item); }, }, { @@ -96,7 +88,6 @@ const mainMenuTemplate = ( checked: config.get("options.autoResetAppCache"), click: (item) => { config.set("options.autoResetAppCache", item.checked); - clickCb(item); }, }, { @@ -105,7 +96,6 @@ const mainMenuTemplate = ( checked: config.get("options.resumeOnStart"), click: (item) => { config.set("options.resumeOnStart", item.checked); - clickCb(item); }, }, ...(is.windows() || is.linux() @@ -116,7 +106,6 @@ const mainMenuTemplate = ( checked: config.get("options.hideMenu"), click: (item) => { config.set("options.hideMenu", item.checked); - clickCb(item); }, }, ] @@ -131,7 +120,6 @@ const mainMenuTemplate = ( checked: config.get("options.startAtLogin"), click: (item) => { config.set("options.startAtLogin", item.checked); - clickCb(item); }, }, ] @@ -146,7 +134,6 @@ const mainMenuTemplate = ( click: () => { config.set("options.tray", false); config.set("options.appVisible", true); - clickCb(item); }, }, { @@ -157,7 +144,6 @@ const mainMenuTemplate = ( click: () => { config.set("options.tray", true); config.set("options.appVisible", true); - clickCb(item); }, }, { @@ -168,7 +154,6 @@ const mainMenuTemplate = ( click: () => { config.set("options.tray", true); config.set("options.appVisible", false); - clickCb(item); }, }, { type: "separator" }, @@ -178,7 +163,6 @@ const mainMenuTemplate = ( checked: config.get("options.trayClickPlayPause"), click: (item) => { config.set("options.trayClickPlayPause", item.checked); - clickCb(item); }, }, ], diff --git a/plugins/in-app-menu/back.js b/plugins/in-app-menu/back.js index c9ca2675..7f9d6644 100644 --- a/plugins/in-app-menu/back.js +++ b/plugins/in-app-menu/back.js @@ -20,9 +20,8 @@ module.exports = (win) => { return; } done = true; - let template = mainMenuTemplate(win, false, false, (item) => { - checkCheckbox(win, item); - }); + let template = mainMenuTemplate(win, false, false); + updateCheckboxesAndRadioButtons(win, template); let menu = Menu.buildFromTemplate(template); Menu.setApplicationMenu(menu); @@ -48,3 +47,22 @@ function checkCheckbox(win, item) { //update menu (closes it) win.webContents.send("updateMenu", true); } + +// Update checkboxes/radio buttons +function updateCheckboxesAndRadioButtons(win, template) { + for (let index in template) { + let item = template[index]; + // Apply function on submenu + if (item.submenu != null) { + updateCheckboxesAndRadioButtons(win, item.submenu); + } + // Change onClick of checkbox+radio + else if (item.type === "checkbox" || item.type === "radio") { + let originalOnclick = item.click; + item.click = (itemClicked) => { + originalOnclick(itemClicked); + checkCheckbox(win, itemClicked); + }; + } + } +}