Skip to content

Commit a2ea7ee

Browse files
author
Akos Kitta
committed
fix: proper workaround for copy/cut/paste
Signed-off-by: Akos Kitta <[email protected]>
1 parent 3e4d805 commit a2ea7ee

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

Diff for: arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts

+10
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,16 @@ import { FileResourceResolver } from './theia/filesystem/file-resource';
353353
import { FileResourceResolver as TheiaFileResourceResolver } from '@theia/filesystem/lib/browser/file-resource';
354354
import { StylingParticipant } from '@theia/core/lib/browser/styling-service';
355355

356+
// Hack to fix copy/cut/paste issue after electron version update in Theia.
357+
// https://github.com/eclipse-theia/theia/issues/12487
358+
import('@theia/core/lib/browser/common-frontend-contribution.js').then(
359+
(theiaCommonContribution) => {
360+
theiaCommonContribution['supportCopy'] = true;
361+
theiaCommonContribution['supportCut'] = true;
362+
theiaCommonContribution['supportPaste'] = true;
363+
}
364+
);
365+
356366
export default new ContainerModule((bind, unbind, isBound, rebind) => {
357367
// Commands, colors, theme adjustments, and toolbar items
358368
bind(ArduinoFrontendContribution).toSelf().inSingletonScope();

Diff for: arduino-ide-extension/src/electron-browser/theia/core/electron-main-menu-factory.ts

+19-7
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ import {
1414
ElectronMenuOptions,
1515
ElectronMainMenuFactory as TheiaElectronMainMenuFactory,
1616
} from '@theia/core/lib/electron-browser/menu/electron-main-menu-factory';
17-
import type { MenuDto } from '@theia/core/lib/electron-common/electron-api';
17+
import type {
18+
MenuDto,
19+
MenuRole,
20+
} from '@theia/core/lib/electron-common/electron-api';
1821
import { inject, injectable } from '@theia/core/shared/inversify';
1922
import {
2023
ArduinoMenus,
@@ -133,6 +136,15 @@ export class ElectronMainMenuFactory extends TheiaElectronMainMenuFactory {
133136
return { label, submenu };
134137
}
135138

139+
// eslint-disable-next-line @typescript-eslint/no-unused-vars, unused-imports/no-unused-vars
140+
protected override roleFor(id: string): MenuRole | undefined {
141+
// MenuItem `roles` are completely broken on macOS:
142+
// - https://github.com/eclipse-theia/theia/issues/11217,
143+
// - https://github.com/arduino/arduino-ide/issues/969
144+
// IDE2 uses commands instead.
145+
return undefined;
146+
}
147+
136148
protected override fillMenuTemplate(
137149
parentItems: MenuDto[],
138150
menuModel: MenuNode,
@@ -262,12 +274,12 @@ export class ElectronMainMenuFactory extends TheiaElectronMainMenuFactory {
262274
execute: () => this.execute(commandId, args, options.rootMenuPath),
263275
};
264276

265-
// Do not restrict menu item roles for macOS
266-
// https://github.com/eclipse-theia/theia/issues/12487
267-
const role = this.roleFor(node.id);
268-
if (role) {
269-
menuItem.role = role;
270-
delete menuItem.execute;
277+
if (isOSX) {
278+
const role = this.roleFor(node.id);
279+
if (role) {
280+
menuItem.role = role;
281+
delete menuItem.execute;
282+
}
271283
}
272284
parentItems.push(menuItem);
273285

0 commit comments

Comments
 (0)