diff --git a/index.js b/index.js index 82bb3320..478d2f86 100644 --- a/index.js +++ b/index.js @@ -152,7 +152,13 @@ function createMainWindow() { return win; } +let createdWindow = false; app.on("browser-window-created", (event, win) => { + //Ensure listeners aren't registered when creating input dialog + if(createdWindow){ + return; + } + createdWindow = true; loadPlugins(win); win.webContents.on("did-fail-load", () => { diff --git a/plugins/in-app-menu/back.js b/plugins/in-app-menu/back.js index c8660ecb..fba6eb6d 100644 --- a/plugins/in-app-menu/back.js +++ b/plugins/in-app-menu/back.js @@ -16,7 +16,7 @@ const originalBuildMenu = Menu.buildFromTemplate; // This function natively gets called on all submenu so no more reason to use recursion Menu.buildFromTemplate = (template) => { // Fix checkboxes and radio buttons - updateCheckboxesAndRadioButtons(template); + updateTemplate(template); // return as normal return originalBuildMenu(template); @@ -55,22 +55,26 @@ function switchMenuVisibility() { win.webContents.send("updateMenu", visible); } -function checkCheckbox(item) { - //check item +function updateCheckboxesAndRadioButtons(item, isRadio, hasSubmenu) { + if (!isRadio) { + //fix checkbox item.checked = !item.checked; - //update menu (closes it) + } + //update menu if radio / hasSubmenu + if (isRadio || hasSubmenu) { win.webContents.send("updateMenu", true); + } } // Update checkboxes/radio buttons -function updateCheckboxesAndRadioButtons(template) { +function updateTemplate(template) { for (let item of template) { // Change onClick of checkbox+radio if ((item.type === "checkbox" || item.type === "radio") && !item.fixed) { let originalOnclick = item.click; item.click = (itemClicked) => { originalOnclick(itemClicked); - checkCheckbox(itemClicked); + updateCheckboxesAndRadioButtons(itemClicked, item.type==='radio', item.hasSubmenu); }; item.fixed = true; }