Change TrayMenuRegistration not to leak or depend on Electron Menu API

Signed-off-by: Juho Heikka <juho.heikka@gmail.com>
This commit is contained in:
Juho Heikka committed 2021-12-31 12:49:39 +02:00
1 parent bb4790e3d8
commit 85714422af
2 files changed
+20 -6

No files matched your search

+9 -5
View File
@@ -19,8 +19,12 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
import type { MenuItemConstructorOptions } from "electron";
export type TrayMenuRegistration = Pick<MenuItemConstructorOptions,
"label" | "type" | "submenu" | "click" |
"toolTip" | "visible" | "enabled" | "id">;
export interface TrayMenuRegistration {
label?: string;
click?: (menuItem: TrayMenuRegistration) => void;
id?: string;
type?: "normal" | "separator" | "submenu"
toolTip?: string;
enabled?: boolean;
submenu?: TrayMenuRegistration[]
}
+11 -1
View File
@@ -83,6 +83,16 @@ export function initTray(
};
}
function getMenuItemConstructorOptions(trayItem: TrayMenuRegistration): Electron.MenuItemConstructorOptions {
return {
...trayItem,
submenu: trayItem.submenu ? trayItem.submenu.map(getMenuItemConstructorOptions) : undefined,
click: trayItem.click ? () => {
trayItem.click(trayItem);
} : undefined,
};
}
function createTrayMenu(
windowManager: WindowManager,
extensionTrayItems: TrayMenuRegistration[],
@@ -116,7 +126,7 @@ function createTrayMenu(
});
}
template = template.concat(extensionTrayItems);
template = template.concat(extensionTrayItems.map(getMenuItemConstructorOptions));
return Menu.buildFromTemplate(template.concat([
{