5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-04 20:11:27 +08:00
wails/v3/internal/runtime/desktop/contextmenu.js

42 lines
1.3 KiB
JavaScript

import {newRuntimeCaller} from "./runtime";
let call = newRuntimeCaller("contextmenu");
function openContextMenu(id, x, y, data) {
void call("OpenContextMenu", {id, x, y, data});
}
export function enableContextMenus(enabled) {
if (enabled) {
window.addEventListener('contextmenu', contextMenuHandler);
} else {
window.removeEventListener('contextmenu', contextMenuHandler);
}
}
function contextMenuHandler(event) {
let processed = processContextMenu(event.target, event);
if (!processed) {
let defaultContextMenuAction = window.getComputedStyle(event.target).getPropertyValue("--default-contextmenu");
defaultContextMenuAction = defaultContextMenuAction ? defaultContextMenuAction.trim() : "";
if (defaultContextMenuAction === 'hide') {
event.preventDefault();
}
}
}
function processContextMenu(element, event) {
let id = element.getAttribute('data-contextmenu');
if (id) {
event.preventDefault();
openContextMenu(id, event.clientX, event.clientY, element.getAttribute('data-contextmenu-data'));
return true;
} else {
let parent = element.parentElement;
if (parent) {
processContextMenu(parent, event);
}
}
return false;
}