From c56457271858b35a69c886e79e109752286b0eb2 Mon Sep 17 00:00:00 2001 From: jbicker Date: Tue, 3 Sep 2019 16:25:59 +0200 Subject: [PATCH] Fixed file menu, New Sketch and New File items were not shown in main menu Signed-off-by: jbicker --- .../electron-arduino-menu-contribution.ts | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/arduino-ide-extension/src/electron-browser/electron-arduino-menu-contribution.ts b/arduino-ide-extension/src/electron-browser/electron-arduino-menu-contribution.ts index c358fd8c..c35fcc8f 100644 --- a/arduino-ide-extension/src/electron-browser/electron-arduino-menu-contribution.ts +++ b/arduino-ide-extension/src/electron-browser/electron-arduino-menu-contribution.ts @@ -1,27 +1,31 @@ import * as electron from 'electron'; -import { injectable } from "inversify"; +import { injectable, inject } from "inversify"; import { ElectronMenuContribution } from "@theia/core/lib/electron-browser/menu/electron-menu-contribution"; import { FrontendApplication } from "@theia/core/lib/browser"; import { isOSX } from '@theia/core'; +import { WorkspaceService } from '@theia/workspace/lib/browser'; @injectable() export class ElectronArduinoMenuContribution extends ElectronMenuContribution { + + @inject(WorkspaceService) protected readonly workspaceService: WorkspaceService; + onStart(app: FrontendApplication): void { - const currentWindow = electron.remote.getCurrentWindow(); - const createdMenuBar = this.factory.createMenuBar(); - - if (isOSX) { - electron.remote.Menu.setApplicationMenu(createdMenuBar); - currentWindow.on('focus', () => - // OSX: Recreate the menus when changing windows. - // OSX only has one menu bar for all windows, so we need to swap - // between them as the user switch windows. - electron.remote.Menu.setApplicationMenu(this.factory.createMenuBar()) - ); - - } else { - // Unix/Windows: Set the per-window menus - currentWindow.setMenu(createdMenuBar); - } + this.workspaceService.onWorkspaceChanged(() => { + const createdMenuBar = this.factory.createMenuBar(); + const currentWindow = electron.remote.getCurrentWindow(); + if (isOSX) { + electron.remote.Menu.setApplicationMenu(createdMenuBar); + currentWindow.on('focus', () => + // OSX: Recreate the menus when changing windows. + // OSX only has one menu bar for all windows, so we need to swap + // between them as the user switch windows. + electron.remote.Menu.setApplicationMenu(this.factory.createMenuBar()) + ); + } else { + // Unix/Windows: Set the per-window menus + currentWindow.setMenu(createdMenuBar); + } + }); } } \ No newline at end of file