⚠️ Is your feature request related to a problem? Please describe
Following #652, #653, and #654, I tested Nucleus 2.5.15 with MapLibre Compose. Trackpad pan now feels excellent but trackpad pinch still feels hesitant and sometimes interrupts abruptly near the edge of the map.
Nucleus currently represents macOS pinch as two synthetic PointerType.Touch contacts. TaoComposeSceneHost places them initially 120 physical pixels either side of the cursor, then changes their distance and angle. This makes an already-recognized native gesture pass through the application's touch recognition again, including span/slop thresholds and touch momentum.
Those contacts can also initially hit different UI regions even when the cursor is inside the map. I suspect the synthetic geometry contributes to the boundary-related interruptions, but have not confirmed that cause.
💡 Describe the solution you'd like
Forward recognized pinch using Compose Multiplatform 1.12.0's ScaleStart, ScaleChange, and ScaleEnd, with scaleFactor and the gesture position, through ComposeScene.sendPointerEvent(..., scaleGestureFactor = ...). The pointer event API explicitly supports platform-recognized trackpad scaling. MapLibre Compose already handles this path without reapplying touch recognition or adding release momentum.
This would complement the Pan event support added for #654. Please also consider Linux/Wayland and Windows, whose pinch paths currently synthesize touch contacts too.
Rotation needs separate consideration because Compose has no equivalent rotation event.
Versions tested: Nucleus 2.5.15, Compose Multiplatform 1.12.0, macOS 26.6.2 on a MacBook Pro trackpad.
🤚 Do you want to develop this feature yourself?
Not soon, but I may get to it next month if you don't by then.
Following #652, #653, and #654, I tested Nucleus 2.5.15 with MapLibre Compose. Trackpad pan now feels excellent but trackpad pinch still feels hesitant and sometimes interrupts abruptly near the edge of the map.
Nucleus currently represents macOS pinch as two synthetic
PointerType.Touchcontacts. TaoComposeSceneHost places them initially 120 physical pixels either side of the cursor, then changes their distance and angle. This makes an already-recognized native gesture pass through the application's touch recognition again, including span/slop thresholds and touch momentum.Those contacts can also initially hit different UI regions even when the cursor is inside the map. I suspect the synthetic geometry contributes to the boundary-related interruptions, but have not confirmed that cause.
💡 Describe the solution you'd like
Forward recognized pinch using Compose Multiplatform 1.12.0's
ScaleStart,ScaleChange, andScaleEnd, withscaleFactorand the gesture position, throughComposeScene.sendPointerEvent(..., scaleGestureFactor = ...). The pointer event API explicitly supports platform-recognized trackpad scaling. MapLibre Compose already handles this path without reapplying touch recognition or adding release momentum.This would complement the Pan event support added for #654. Please also consider Linux/Wayland and Windows, whose pinch paths currently synthesize touch contacts too.
Rotation needs separate consideration because Compose has no equivalent rotation event.
Versions tested: Nucleus 2.5.15, Compose Multiplatform 1.12.0, macOS 26.6.2 on a MacBook Pro trackpad.
🤚 Do you want to develop this feature yourself?
Not soon, but I may get to it next month if you don't by then.