Skip to content

Commit 47688fe

Browse files
fix minimap navigation on touch devices (#6580)
Fixes minimap navigation (dragging the viewport box on the minimap) on touch devices. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6580-fix-minimap-navigation-on-touch-devices-2a16d73d36508195b070da2b8e4b908a) by [Unito](https://www.unito.io) --------- Co-authored-by: Alexander Brown <[email protected]>
1 parent 7c2a768 commit 47688fe

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

src/renderer/extensions/minimap/MiniMap.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,12 @@
6161
<div class="minimap-viewport" :style="viewportStyles" />
6262

6363
<div
64-
class="absolute inset-0"
64+
class="absolute inset-0 touch-none"
6565
@pointerdown="handlePointerDown"
6666
@pointermove="handlePointerMove"
6767
@pointerup="handlePointerUp"
6868
@pointerleave="handlePointerUp"
69+
@pointercancel="handlePointerCancel"
6970
@wheel="handleWheel"
7071
/>
7172
</div>
@@ -105,6 +106,7 @@ const {
105106
handlePointerDown,
106107
handlePointerMove,
107108
handlePointerUp,
109+
handlePointerCancel,
108110
handleWheel,
109111
setMinimapRef
110112
} = useMinimap()

src/renderer/extensions/minimap/composables/useMinimap.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ export function useMinimap() {
244244
handlePointerDown: interaction.handlePointerDown,
245245
handlePointerMove: interaction.handlePointerMove,
246246
handlePointerUp: interaction.handlePointerUp,
247+
handlePointerCancel: interaction.handlePointerCancel,
247248
handleWheel: interaction.handleWheel,
248249
setMinimapRef,
249250
updateOption

src/renderer/extensions/minimap/composables/useMinimapInteraction.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ export function useMinimapInteraction(
3535
const handlePointerDown = (e: PointerEvent) => {
3636
isDragging.value = true
3737
updateContainerRect()
38+
const target = e.currentTarget
39+
if (target instanceof HTMLElement) {
40+
target.setPointerCapture(e.pointerId)
41+
}
3842
handlePointerMove(e)
3943
}
4044

@@ -53,10 +57,23 @@ export function useMinimapInteraction(
5357
centerViewOn(worldX, worldY)
5458
}
5559

56-
const handlePointerUp = () => {
60+
const releasePointer = (e?: PointerEvent) => {
5761
isDragging.value = false
62+
if (!e) return
63+
64+
const target = e.currentTarget
65+
if (
66+
target instanceof HTMLElement &&
67+
target.hasPointerCapture(e.pointerId)
68+
) {
69+
target.releasePointerCapture(e.pointerId)
70+
}
5871
}
5972

73+
const handlePointerUp = releasePointer
74+
75+
const handlePointerCancel = releasePointer
76+
6077
const handleWheel = (e: WheelEvent) => {
6178
e.preventDefault()
6279

@@ -102,6 +119,7 @@ export function useMinimapInteraction(
102119
handlePointerDown,
103120
handlePointerMove,
104121
handlePointerUp,
122+
handlePointerCancel,
105123
handleWheel
106124
}
107125
}

0 commit comments

Comments
 (0)