未验证 提交 35bad702 编写于 作者: S SteVen Batten 提交者: GitHub

disable submenus rendered as dropdowns (#109934)

* disable submenus rendered as dropdowns
fix #109305

* address comments
上级 c8cfffe0
......@@ -12,3 +12,7 @@
cursor: pointer;
height: 100%;
}
.monaco-dropdown > .dropdown-label > .action-label.disabled {
cursor: default;
}
......@@ -35,6 +35,7 @@ export class DropdownMenuActionViewItem extends BaseActionViewItem {
private menuActionsOrProvider: readonly IAction[] | IActionProvider;
private dropdownMenu: DropdownMenu | undefined;
private contextMenuProvider: IContextMenuProvider;
private actionItem: HTMLElement | null = null;
private _onDidChangeVisibility = this._register(new Emitter<boolean>());
readonly onDidChangeVisibility = this._onDidChangeVisibility.event;
......@@ -56,6 +57,8 @@ export class DropdownMenuActionViewItem extends BaseActionViewItem {
}
render(container: HTMLElement): void {
this.actionItem = container;
const labelRenderer: ILabelRenderer = (el: HTMLElement): IDisposable | null => {
this.element = append(el, $('a.action-label'));
......@@ -115,6 +118,8 @@ export class DropdownMenuActionViewItem extends BaseActionViewItem {
}
};
}
this.updateEnabled();
}
setActionContext(newContext: unknown): void {
......@@ -134,6 +139,12 @@ export class DropdownMenuActionViewItem extends BaseActionViewItem {
this.dropdownMenu.show();
}
}
protected updateEnabled(): void {
const disabled = !this.getAction().enabled;
this.actionItem?.classList.toggle('disabled', disabled);
this.element?.classList.toggle('disabled', disabled);
}
}
export interface IActionWithDropdownActionViewItemOptions extends IActionViewItemOptions {
......
......@@ -777,6 +777,12 @@ class SubmenuMenuActionViewItem extends BaseMenuActionViewItem {
}));
}
updateEnabled(): void {
// override on submenu entry
// native menus do not observe enablement on sumbenus
// we mimic that behavior
}
open(selectFirst?: boolean): void {
this.cleanupExistingSubmenu(false);
this.createSubmenu(selectFirst);
......
......@@ -242,7 +242,7 @@ export class SubmenuAction extends Action {
}
constructor(id: string, label: string, private _actions: IAction[], cssClass?: string) {
super(id, label, cssClass, true);
super(id, label, cssClass, !!_actions?.length);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册