[FIX] electron: remove Electron's default English application menu
Without a menu set by the application, Electron installs its own: in English, while the interface is French, and offering Reload and the developer tools to the operator. The shell now sets a null menu before its first window, which also removes the menu bar on Windows. Checked: the shell test fails without the call and passes with it; the rebuilt exe, run under Wine 11, shows the version banner and no menu bar. --- FR --- [FIX] electron : retirer le menu anglais par défaut d'Electron Sans menu posé par l'application, Electron installe le sien : en anglais, alors que l'interface est en français, et offrant à l'opérateur le rechargement et les outils de développement. La coquille pose désormais un menu nul avant sa première fenêtre, ce qui retire aussi la barre de menu sous Windows. Vérifié : l'épreuve de la coquille échoue sans l'appel et passe avec ; l'exécutable reconstruit, lancé sous Wine 11, montre le bandeau de version et aucune barre de menu. Assisted-by: Claude Opus 5.5
This commit is contained in:
parent
a3354e2b0b
commit
100c0d3399
3 changed files with 27 additions and 2 deletions
|
|
@ -10,7 +10,7 @@
|
|||
// processus principal que par les canaux que ce module traite. Un nom importé
|
||||
// interprété comme du balisage reste ainsi une faute d'affichage, et non un
|
||||
// accès au disque.
|
||||
import { app, BrowserWindow, ipcMain } from 'electron';
|
||||
import { app, BrowserWindow, ipcMain, Menu } from 'electron';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
// Chemins relatifs à ce module : ils valent dans le dépôt comme dans
|
||||
|
|
@ -45,4 +45,12 @@ function creerFenetre() {
|
|||
fenetre.loadFile(PAGE);
|
||||
}
|
||||
|
||||
app.whenReady().then(creerFenetre);
|
||||
// Sans menu posé par l'application, Electron installe le sien : en anglais,
|
||||
// alors que l'interface est en français (§ 2), et porteur de « Reload » et
|
||||
// des outils de développement. null le retire, et retire avec lui la barre
|
||||
// de menu des fenêtres sous Windows et Linux ; il est posé avant la première
|
||||
// fenêtre, qui naîtrait sinon avec la barre.
|
||||
app.whenReady().then(() => {
|
||||
Menu.setApplicationMenu(null);
|
||||
creerFenetre();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -92,6 +92,14 @@ describe('coquille : processus principal', () => {
|
|||
assert.ok(existsSync(webPreferences.preload), `${webPreferences.preload} absent`);
|
||||
});
|
||||
|
||||
test("aucun menu d'application : le menu par défaut d'Electron, en anglais, est retiré avant la première fenêtre (§ 2)", () => {
|
||||
const { menus, sequence } = journalDeLaCoquille();
|
||||
assert.deepEqual(menus, [null]);
|
||||
const retrait = sequence.indexOf('Menu.setApplicationMenu');
|
||||
const fenetre = sequence.indexOf('new BrowserWindow');
|
||||
assert.ok(retrait !== -1 && fenetre !== -1 && retrait < fenetre, `ordre des appels : ${sequence.join(', ')}`);
|
||||
});
|
||||
|
||||
test('la fenêtre charge la page que Vite construit dans www/', () => {
|
||||
assert.deepEqual(journalDeLaCoquille().chargements, [
|
||||
{ loadFile: join(RACINE, 'www', 'index.html') },
|
||||
|
|
|
|||
|
|
@ -48,6 +48,8 @@ const journal = {
|
|||
sequence: [],
|
||||
// Options de chaque new BrowserWindow.
|
||||
fenetres: [],
|
||||
// Argument de chaque Menu.setApplicationMenu.
|
||||
menus: [],
|
||||
// { loadFile: chemin } ou { loadURL: adresse }, par appel.
|
||||
chargements: [],
|
||||
// Canal de chaque ipcMain.handle ou ipcMain.on.
|
||||
|
|
@ -124,6 +126,13 @@ export class BrowserWindow {
|
|||
}
|
||||
}
|
||||
|
||||
export const Menu = {
|
||||
setApplicationMenu(menu) {
|
||||
journal.sequence.push('Menu.setApplicationMenu');
|
||||
journal.menus.push(menu);
|
||||
},
|
||||
};
|
||||
|
||||
export const ipcMain = {
|
||||
handle(canal, gestionnaire) {
|
||||
journal.sequence.push(`ipcMain.handle:${canal}`);
|
||||
|
|
|
|||
Loading…
Reference in a new issue