Skip to content
Snippets Groups Projects
Commit 28fb400a authored by Loïc Correnson's avatar Loïc Correnson Committed by David Bühler
Browse files

[dome] only create menu items from primary window

parent 753d6e77
No related branches found
No related tags found
No related merge requests found
...@@ -167,6 +167,7 @@ function obtainGlobalSettings() { ...@@ -167,6 +167,7 @@ function obtainGlobalSettings() {
type Store = { [key: string]: unknown }; type Store = { [key: string]: unknown };
interface Handle { interface Handle {
primary: boolean; // Primary window
window: BrowserWindow; // Also prevents Gc window: BrowserWindow; // Also prevents Gc
frame: Electron.Rectangle; // Window frame frame: Electron.Rectangle; // Window frame
devtools: boolean; // Developper tools visible devtools: boolean; // Developper tools visible
...@@ -348,6 +349,7 @@ function lookupConfig(pwd = '.') { ...@@ -348,6 +349,7 @@ function lookupConfig(pwd = '.') {
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
function createBrowserWindow( function createBrowserWindow(
primary: boolean,
config: BrowserWindowConstructorOptions, config: BrowserWindowConstructorOptions,
argv?: string[], argv?: string[],
wdir?: string, wdir?: string,
...@@ -387,6 +389,7 @@ function createBrowserWindow( ...@@ -387,6 +389,7 @@ function createBrowserWindow(
const wid = webContents.id; const wid = webContents.id;
const handle: Handle = { const handle: Handle = {
primary,
window: theWindow, window: theWindow,
config: configFile, config: configFile,
reloaded: false, reloaded: false,
...@@ -487,7 +490,7 @@ function createPrimaryWindow() { ...@@ -487,7 +490,7 @@ function createPrimaryWindow() {
applyThemeSettings(globals); applyThemeSettings(globals);
// Create Window // Create Window
createBrowserWindow({ title: appName }, argv, wdir); createBrowserWindow(true, { title: appName }, argv, wdir);
} }
let appCount = 1; let appCount = 1;
...@@ -503,13 +506,15 @@ function createSecondaryWindow( ...@@ -503,13 +506,15 @@ function createSecondaryWindow(
argString = argString.substring(argStart.length); argString = argString.substring(argStart.length);
const electronArgv = JSON.parse(argString); const electronArgv = JSON.parse(argString);
const argv = stripElectronArgv(electronArgv); const argv = stripElectronArgv(electronArgv);
createBrowserWindow({ title: `${appName} #${++appCount}` }, argv, wdir); const title = `${appName} #${++appCount}`;
createBrowserWindow(false, { title }, argv, wdir);
} }
} }
function createDesktopWindow() { function createDesktopWindow() {
const wdir = app.getPath('home'); const wdir = app.getPath('home');
createBrowserWindow({ title: `${appName} #${++appCount}` }, [], wdir); const title = `${appName} #${++appCount}`;
createBrowserWindow(false, { title }, [], wdir);
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
...@@ -541,7 +546,8 @@ let PreferenceWindow: BrowserWindow | undefined; ...@@ -541,7 +546,8 @@ let PreferenceWindow: BrowserWindow | undefined;
function showSettingsWindow() { function showSettingsWindow() {
if (!PreferenceWindow) if (!PreferenceWindow)
PreferenceWindow = createBrowserWindow({ PreferenceWindow = createBrowserWindow(
false, {
title: `${appName} Settings`, title: `${appName} Settings`,
width: 256, width: 256,
height: 248, height: 248,
...@@ -645,9 +651,21 @@ export function setMenuItem(spec: Menubar.CustomMenuItem) { ...@@ -645,9 +651,21 @@ export function setMenuItem(spec: Menubar.CustomMenuItem) {
Menubar.setMenuItem(spec); Menubar.setMenuItem(spec);
} }
ipcMain.on('dome.ipc.menu.addmenu', (_evt, label) => addMenu(label)); function isPrimary(evt: IpcMainEvent): boolean {
ipcMain.on('dome.ipc.menu.addmenuitem', (_evt, spec) => addMenuItem(spec)); const h = WindowHandles.get(evt.sender.id);
ipcMain.on('dome.ipc.menu.setmenuitem', (_evt, spec) => setMenuItem(spec)); return h ? h.primary : false;
}
ipcMain.on('dome.ipc.menu.addmenu', (evt, label) =>
isPrimary(evt) && Menubar.addMenu(label)
);
ipcMain.on('dome.ipc.menu.addmenuitem', (evt, spec) =>
isPrimary(evt) && Menubar.addMenuItem(spec)
);
ipcMain.on('dome.ipc.menu.setmenuitem', (_evt, spec) =>
// Always update menu items
Menubar.setMenuItem(spec)
);
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// --- Dialogs Management // --- Dialogs Management
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment