mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-07-13 22:36:32 +00:00
fix: falsy context menu handlerId
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>
This commit is contained in:
parent
10b38820bc
commit
5fd02b9fd7
@ -1,6 +1,7 @@
|
||||
import { JsonRpcConnectionHandler } from '@theia/core/lib/common/messaging/proxy-factory';
|
||||
import { ElectronMainWindowService } from '@theia/core/lib/electron-common/electron-main-window-service';
|
||||
import { ElectronConnectionHandler } from '@theia/core/lib/electron-common/messaging/electron-connection-handler';
|
||||
import { TheiaMainApi } from '@theia/core/lib/electron-main/electron-api-main';
|
||||
import {
|
||||
ElectronMainApplication as TheiaElectronMainApplication,
|
||||
ElectronMainApplicationContribution,
|
||||
@ -17,6 +18,7 @@ import { ElectronArduino } from './electron-arduino';
|
||||
import { IDEUpdaterImpl } from './ide-updater/ide-updater-impl';
|
||||
import { ElectronMainApplication } from './theia/electron-main-application';
|
||||
import { ElectronMainWindowServiceImpl } from './theia/electron-main-window-service';
|
||||
import { TheiaMainApiFixFalsyHandlerId } from './theia/theia-api-main';
|
||||
import { TheiaElectronWindow } from './theia/theia-electron-window';
|
||||
|
||||
export default new ContainerModule((bind, unbind, isBound, rebind) => {
|
||||
@ -52,4 +54,8 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
|
||||
|
||||
bind(ElectronArduino).toSelf().inSingletonScope();
|
||||
bind(ElectronMainApplicationContribution).toService(ElectronArduino);
|
||||
|
||||
// eclipse-theia/theia#12500
|
||||
bind(TheiaMainApiFixFalsyHandlerId).toSelf().inSingletonScope();
|
||||
rebind(TheiaMainApi).toService(TheiaMainApiFixFalsyHandlerId);
|
||||
});
|
||||
|
@ -0,0 +1,40 @@
|
||||
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;
|
||||
});
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user