Prevent browser context menu on custom right-click menus

Always prevent the default browser context menu and stop event propagation on right-click interactions and custom menus. This ensures that only the application's custom context menus are shown and avoids interference from the browser's native context menu.
This commit is contained in:
Dariusz L
2025-07-24 20:17:04 +02:00
parent 3b1a69041c
commit 58720a8eca
4 changed files with 20 additions and 2 deletions

View File

@@ -131,9 +131,11 @@ export class CanvasInteractions {
// 2. Inne przyciski myszy
if (e.button === 2) { // Prawy przycisk myszy
e.preventDefault(); // Always prevent right-click default behavior
e.stopPropagation(); // Stop event propagation
const clickedLayerResult = this.canvas.canvasLayers.getLayerAtPosition(worldCoords.x, worldCoords.y);
if (clickedLayerResult && this.canvas.canvasSelection.selectedLayers.includes(clickedLayerResult.layer)) {
e.preventDefault();
this.canvas.canvasLayers.showBlendModeMenu(viewCoords.x, viewCoords.y);
}
return;
@@ -263,7 +265,9 @@ export class CanvasInteractions {
}
handleContextMenu(e: MouseEvent): void {
// Always prevent browser context menu - we handle all right-click interactions ourselves
e.preventDefault();
e.stopPropagation();
}
handleWheel(e: WheelEvent): void {

View File

@@ -739,6 +739,12 @@ export class CanvasLayers {
content.appendChild(container);
});
// Add contextmenu event listener to the menu itself to prevent browser context menu
menu.addEventListener('contextmenu', (e: MouseEvent) => {
e.preventDefault();
e.stopPropagation();
});
const container = this.canvas.canvas.parentElement || document.body;
container.appendChild(menu);