Skip unsupported actions and menu items
Using this to skip the toggle developer tools action since there doesn't seem to be any way to do that from the browser. There might be others we will need to add.
This commit is contained in:
parent
6bb62005cb
commit
ec515c0a3f
@ -6,6 +6,8 @@ import "./fill/environmentService";
|
||||
import "./fill/vscodeTextmate";
|
||||
import "./fill/codeEditor";
|
||||
import "./fill/mouseEvent";
|
||||
import "./fill/menuRegistry";
|
||||
import "./fill/workbenchRegistry";
|
||||
import { PasteAction } from "./fill/paste";
|
||||
import "./fill/dom";
|
||||
import "./vscode.scss";
|
||||
|
21
packages/vscode/src/fill/menuRegistry.ts
Normal file
21
packages/vscode/src/fill/menuRegistry.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import { logger } from "@coder/logger";
|
||||
import { IDisposable } from "vs/base/common/lifecycle";
|
||||
import * as actions from "vs/platform/actions/common/actions";
|
||||
import { ToggleDevToolsAction } from "vs/workbench/electron-browser/actions";
|
||||
|
||||
// Intercept appending menu items so we can skip items that won't work.
|
||||
const originalAppend = actions.MenuRegistry.appendMenuItem.bind(actions.MenuRegistry);
|
||||
actions.MenuRegistry.appendMenuItem = (id: actions.MenuId, item: actions.IMenuItem | actions.ISubmenuItem): IDisposable => {
|
||||
if (actions.isIMenuItem(item)) {
|
||||
switch (item.command.id) {
|
||||
case ToggleDevToolsAction.ID: // There appears to be no way to toggle this programmatically.
|
||||
logger.debug(`Skipping unsupported menu item ${item.command.id}`);
|
||||
|
||||
return {
|
||||
dispose: (): void => undefined,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return originalAppend(id, item);
|
||||
};
|
@ -87,7 +87,7 @@ class WindowsService implements IWindowsService {
|
||||
}
|
||||
|
||||
public toggleDevTools(_windowId: number): Promise<void> {
|
||||
throw new Error("not implemented");
|
||||
throw new Error("Toggling developer tools from JavaScript is not supported.");
|
||||
}
|
||||
|
||||
public closeWorkspace(_windowId: number): Promise<void> {
|
||||
|
23
packages/vscode/src/fill/workbenchRegistry.ts
Normal file
23
packages/vscode/src/fill/workbenchRegistry.ts
Normal file
@ -0,0 +1,23 @@
|
||||
import { logger } from "@coder/logger";
|
||||
import { IDisposable } from "vs/base/common/lifecycle";
|
||||
import { Registry } from "vs/platform/registry/common/platform";
|
||||
import { IWorkbenchActionRegistry, Extensions } from "vs/workbench/common/actions";
|
||||
import { SyncActionDescriptor } from "vs/platform/actions/common/actions";
|
||||
import { ContextKeyExpr } from "vs/platform/contextkey/common/contextkey";
|
||||
import { ToggleDevToolsAction } from "vs/workbench/electron-browser/actions";
|
||||
|
||||
// Intercept adding workbench actions so we can skip actions that won't work.
|
||||
const registry = Registry.as<IWorkbenchActionRegistry>(Extensions.WorkbenchActions);
|
||||
const originalRegister = registry.registerWorkbenchAction.bind(registry);
|
||||
registry.registerWorkbenchAction = (descriptor: SyncActionDescriptor, alias: string, category?: string, when?: ContextKeyExpr): IDisposable => {
|
||||
switch (descriptor.id) {
|
||||
case ToggleDevToolsAction.ID: // There appears to be no way to toggle this programmatically.
|
||||
logger.debug(`Skipping unsupported workbench action ${descriptor.id}`);
|
||||
|
||||
return {
|
||||
dispose: (): void => undefined,
|
||||
};
|
||||
}
|
||||
|
||||
return originalRegister(descriptor, alias, category, when);
|
||||
};
|
Reference in New Issue
Block a user