Skip to content

Tao: dispatch recognized trackpad pinch through Compose scale events #660

Description

@sargunv

⚠️ 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions