mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-11-09 18:38:33 +00:00
The very first context menu item with ID `0` has not had a click handler Ref: eclipse-theia/theia#12500 Signed-off-by: Akos Kitta <a.kitta@arduino.cc>
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import {
|
|
CHANNEL_INVOKE_MENU,
|
|
InternalMenuDto,
|
|
} from '@theia/core/lib/electron-common/electron-api';
|
|
import { TheiaMainApi } from '@theia/core/lib/electron-main/electron-api-main';
|
|
import { injectable } from '@theia/core/shared/inversify';
|
|
import { MenuItemConstructorOptions } from '@theia/electron/shared/electron';
|
|
|
|
@injectable()
|
|
export class TheiaMainApiFixFalsyHandlerId extends TheiaMainApi {
|
|
override fromMenuDto(
|
|
sender: Electron.WebContents,
|
|
menuId: number,
|
|
menuDto: InternalMenuDto[]
|
|
): Electron.MenuItemConstructorOptions[] {
|
|
return menuDto.map((dto) => {
|
|
const result: MenuItemConstructorOptions = {
|
|
id: dto.id,
|
|
label: dto.label,
|
|
type: dto.type,
|
|
checked: dto.checked,
|
|
enabled: dto.enabled,
|
|
visible: dto.visible,
|
|
role: dto.role,
|
|
accelerator: dto.accelerator,
|
|
};
|
|
if (dto.submenu) {
|
|
result.submenu = this.fromMenuDto(sender, menuId, dto.submenu);
|
|
}
|
|
// Fix for handlerId === 0
|
|
// https://github.com/eclipse-theia/theia/pull/12500#issuecomment-1686074836
|
|
if (typeof dto.handlerId === 'number') {
|
|
result.click = () => {
|
|
sender.send(CHANNEL_INVOKE_MENU, menuId, dto.handlerId);
|
|
};
|
|
}
|
|
return result;
|
|
});
|
|
}
|
|
}
|