提交 17a5c2f4 编写于 作者: I isidor

menu actions: respect alt key when pressed

fixes #41157
上级 39f3f9a1
......@@ -16,6 +16,34 @@ import { ActionItem, Separator } from 'vs/base/browser/ui/actionbar/actionbar';
import { domEvent } from 'vs/base/browser/event';
import { Emitter } from 'vs/base/common/event';
const _altKey = new class extends Emitter<boolean> {
private _subscriptions: IDisposable[] = [];
private _isPressed: boolean;
constructor() {
super();
this._subscriptions.push(domEvent(document.body, 'keydown')(e => this.isPressed = e.altKey));
this._subscriptions.push(domEvent(document.body, 'keyup')(e => this.isPressed = false));
this._subscriptions.push(domEvent(document.body, 'mouseleave')(e => this.isPressed = false));
this._subscriptions.push(domEvent(document.body, 'blur')(e => this.isPressed = false));
}
get isPressed(): boolean {
return this._isPressed;
}
set isPressed(value: boolean) {
this._isPressed = value;
this.fire(this._isPressed);
}
dispose() {
super.dispose();
this._subscriptions = dispose(this._subscriptions);
}
};
export function fillInActions(menu: IMenu, options: IMenuActionOptions, target: IAction[] | { primary: IAction[]; secondary: IAction[]; }, isPrimaryGroup: (group: string) => boolean = group => group === 'navigation'): void {
const groups = menu.getActions(options);
......@@ -25,6 +53,10 @@ export function fillInActions(menu: IMenu, options: IMenuActionOptions, target:
for (let tuple of groups) {
let [group, actions] = tuple;
if (_altKey.isPressed) {
actions = actions.map(a => !!a.alt ? a.alt : a);
}
if (isPrimaryGroup(group)) {
const head = Array.isArray<IAction>(target) ? target : target.primary;
......@@ -72,26 +104,6 @@ export function createActionItem(action: IAction, keybindingService: IKeybinding
return undefined;
}
const _altKey = new class extends Emitter<boolean> {
private _subscriptions: IDisposable[] = [];
constructor() {
super();
this._subscriptions.push(domEvent(document.body, 'keydown')(e => this.fire(e.altKey)));
this._subscriptions.push(domEvent(document.body, 'keyup')(e => this.fire(false)));
this._subscriptions.push(domEvent(document.body, 'mouseleave')(e => this.fire(false)));
this._subscriptions.push(domEvent(document.body, 'blur')(e => this.fire(false)));
}
dispose() {
super.dispose();
this._subscriptions = dispose(this._subscriptions);
}
};
export class MenuItemActionItem extends ActionItem {
private _wantsAltCommand: boolean = false;
......
......@@ -424,7 +424,7 @@ MenuRegistry.appendMenuItem(MenuId.ExplorerContext, {
},
alt: {
id: DELETE_FILE_ID,
title: MOVE_FILE_TO_TRASH_LABEL
title: nls.localize('deleteFile', "Delete Permanently")
},
when: ExplorerRootContext.toNegated()
});
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册