Почему мой значок MenuItem не отображается на верхнем уровне в Electron 1.8.1? - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть приложение Electron с меню. Первый пункт меню является раскрывающимся, поэтому он имеет подменю. Два других пункта меню просто делают свое дело при нажатии. Моя проблема в том, что я просто не могу показать значок для пунктов меню, которые делают свое дело сразу. (Тот же значок отображается в точках подменю.) Как и в:

const {
  BrowserWindow,
  Menu, app
} = require('electron');
const path = require('path');
viewerWindow = null;

// define the menus
var menuoptions = [
    {
        label: "Select All", // {role: 'selectAll' } doesn't show the keyboard shortcuts
        accelerator: 'CmdOrCtrl+A',
        click: () => viewerWindow.webContents.selectAll()
    },
    {
        label: "Copy", // {role: 'copy'} doesn't show the keyboard shortcuts
        accelerator: 'CmdOrCtrl+C',
        click: () => viewerWindow.webContents.copy()
    },

    {type:'separator'}, 
    {
        id: 'b',
        label:'Back',
        icon: 'C:/Users/bvanlogg/Documents/ElectronFiddle/point_left.png',
        accelerator: 'Alt+Left',
        click() {
            nav.goBack()
        }
    },
    {
        id: 'f',
        label:'Forward',
        icon: 'C:/Users/bvanlogg/Documents/ElectronFiddle/point_right.png',
        accelerator: 'Alt+Right',
        click() {
            nav.goForward()
        }
    },
    {type:'separator'}, 
    {role: 'toggledevtools'},
    {role: 'quit'}
]

const contextmenu = Menu.buildFromTemplate(menuoptions)
const toolsmenu = Menu.buildFromTemplate([{
    label: 'Tools',
    submenu: menuoptions
},
{type:'separator'}, 
{type:'separator'}, 
{type:'separator'}, 
{type:'separator'}, 
{
    id: 'bb',
    icon: 'C:/Users/bvanlogg/Documents/ElectronFiddle/point_left.png',
    label:'Back',
    click() {
        nav.goBack()
    }
},
{
    id: 'ff',
    label:'Forward',
    icon: 'C:/Users/bvanlogg/Documents/ElectronFiddle/point_right.png',
    click() {
        nav.goForward()
    }
}
])
Menu.setApplicationMenu(toolsmenu);

// start the renderer
app.on('ready', () => {
    viewerWindow = new BrowserWindow({
        x: 336,
        y: 280, 
        height: 601,
        width: 1248, 
        show: false
    })
    viewerWindow.setMenu(toolsmenu);
    viewerWindow.webContents.on('context-menu', e => {
        contextmenu.popup()
    })
    docurl = path.resolve(`${__dirname}/index.html`);
    viewerWindow.loadURL(docurl);

    viewerWindow.on('ready-to-show', () => {
        viewerWindow.show();
    })



})
// Quit when all windows are closed.
app.on('window-all-closed', function ()
{
    app.quit();
})

Значок просто не отображается. Если я вынимаю этикетку, ничего не отображается. Но значок отображается , когда я помещаю точно такой же код в подменю. Я создал снимок экрана , показывающий указанные значки рядом с параметрами в подменю, но не с параметрами в главном меню:

...