diff --git a/src/renderer/extensions/minimap/MiniMap.vue b/src/renderer/extensions/minimap/MiniMap.vue index b33ddb3ad..e61085350 100644 --- a/src/renderer/extensions/minimap/MiniMap.vue +++ b/src/renderer/extensions/minimap/MiniMap.vue @@ -61,11 +61,12 @@
@@ -105,6 +106,7 @@ const { handlePointerDown, handlePointerMove, handlePointerUp, + handlePointerCancel, handleWheel, setMinimapRef } = useMinimap() diff --git a/src/renderer/extensions/minimap/composables/useMinimap.ts b/src/renderer/extensions/minimap/composables/useMinimap.ts index 343a5ad55..9d572f133 100644 --- a/src/renderer/extensions/minimap/composables/useMinimap.ts +++ b/src/renderer/extensions/minimap/composables/useMinimap.ts @@ -244,6 +244,7 @@ export function useMinimap() { handlePointerDown: interaction.handlePointerDown, handlePointerMove: interaction.handlePointerMove, handlePointerUp: interaction.handlePointerUp, + handlePointerCancel: interaction.handlePointerCancel, handleWheel: interaction.handleWheel, setMinimapRef, updateOption diff --git a/src/renderer/extensions/minimap/composables/useMinimapInteraction.ts b/src/renderer/extensions/minimap/composables/useMinimapInteraction.ts index f978cee94..fc9cab1e6 100644 --- a/src/renderer/extensions/minimap/composables/useMinimapInteraction.ts +++ b/src/renderer/extensions/minimap/composables/useMinimapInteraction.ts @@ -35,6 +35,10 @@ export function useMinimapInteraction( const handlePointerDown = (e: PointerEvent) => { isDragging.value = true updateContainerRect() + const target = e.currentTarget + if (target instanceof HTMLElement) { + target.setPointerCapture(e.pointerId) + } handlePointerMove(e) } @@ -53,10 +57,23 @@ export function useMinimapInteraction( centerViewOn(worldX, worldY) } - const handlePointerUp = () => { + const releasePointer = (e?: PointerEvent) => { isDragging.value = false + if (!e) return + + const target = e.currentTarget + if ( + target instanceof HTMLElement && + target.hasPointerCapture(e.pointerId) + ) { + target.releasePointerCapture(e.pointerId) + } } + const handlePointerUp = releasePointer + + const handlePointerCancel = releasePointer + const handleWheel = (e: WheelEvent) => { e.preventDefault() @@ -102,6 +119,7 @@ export function useMinimapInteraction( handlePointerDown, handlePointerMove, handlePointerUp, + handlePointerCancel, handleWheel } }