修复右键图层时 pointerdown 被取消导致右键菜单无法打开的问题

This commit is contained in:
2026-07-20 13:38:41 +08:00
parent 96dfb6c7d3
commit 68b51aba22
@@ -214,14 +214,10 @@ export function useImageCanvasStageInteractions({
}
}, [finishViewportInteraction, flushMinimapViewportDrag]);
const rejectRightButtonInteraction = useCallback(
(event: ReactPointerEvent<HTMLElement | HTMLDivElement>) => {
event.preventDefault();
event.stopPropagation();
clearActiveInteraction();
},
[clearActiveInteraction],
);
const rejectRightButtonInteraction = useCallback(() => {
// Preserve the pointer event so the matching contextmenu event can still open.
clearActiveInteraction();
}, [clearActiveInteraction]);
const setShiftPressed = useCallback((pressed: boolean) => {
isShiftPressedRef.current = pressed;
@@ -247,7 +243,7 @@ export function useImageCanvasStageInteractions({
(event: ReactPointerEvent<HTMLDivElement>) => {
const button = getPointerButton(event);
if (button === 2) {
rejectRightButtonInteraction(event);
rejectRightButtonInteraction();
return;
}
if (button === 1 || (button === 0 && effectiveTool === 'hand')) {
@@ -281,14 +277,20 @@ export function useImageCanvasStageInteractions({
}
clearCanvasFocus();
},
[canvasViewportRef, clearCanvasFocus, effectiveTool, startPan],
[
canvasViewportRef,
clearCanvasFocus,
effectiveTool,
rejectRightButtonInteraction,
startPan,
],
);
const handleLayerPointerDown = useCallback(
(event: ReactPointerEvent<HTMLElement>, layer: CanvasLayer) => {
const button = getPointerButton(event);
if (button === 2) {
rejectRightButtonInteraction(event);
rejectRightButtonInteraction();
return;
}
if (button === 1 || (button === 0 && effectiveTool === 'hand')) {
@@ -426,6 +428,7 @@ export function useImageCanvasStageInteractions({
pickIconSpecFromLayer,
pickPublicationReferenceFromLayer,
pickUiDesignSpecFromLayer,
rejectRightButtonInteraction,
selectedLayerIds,
setGenerateDialog,
setSelectedLayerId,
@@ -499,7 +502,7 @@ export function useImageCanvasStageInteractions({
}
const button = getPointerButton(event);
if (button === 2) {
rejectRightButtonInteraction(event);
rejectRightButtonInteraction();
return;
}
if (button === 1 || (button === 0 && effectiveTool === 'hand')) {
@@ -550,6 +553,7 @@ export function useImageCanvasStageInteractions({
canvasGenerationDialogs,
effectiveTool,
layers,
rejectRightButtonInteraction,
selectedLayerIds,
setSelectedLayerId,
setSelectedLayerIds,