diff --git a/src/main/tray/tray-menu-registration.d.ts b/src/main/tray/tray-menu-registration.d.ts index 663d88f139..0cf7fe611b 100644 --- a/src/main/tray/tray-menu-registration.d.ts +++ b/src/main/tray/tray-menu-registration.d.ts @@ -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; +export interface TrayMenuRegistration { + label?: string; + click?: (menuItem: TrayMenuRegistration) => void; + id?: string; + type?: "normal" | "separator" | "submenu" + toolTip?: string; + enabled?: boolean; + submenu?: TrayMenuRegistration[] +} diff --git a/src/main/tray/tray.ts b/src/main/tray/tray.ts index 33df367351..ac3e140e3b 100644 --- a/src/main/tray/tray.ts +++ b/src/main/tray/tray.ts @@ -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([ {