• v0.3.1 d9251241dd

    v0.3.1 — overlay drag fix + drag-to-dismiss zone

    .leviathan released this 2026-05-08 03:45:01 +00:00

    • Bug: dragging the bubble panned the OSM map instead of moving the
      bubble. The OnTouchListener was attached to the ComposeView, but
      the inner MapView consumed ACTION_DOWN for its own pan handling
      before the listener fired. Fix: wrap the ComposeView in a custom
      TouchInterceptor FrameLayout whose onInterceptTouchEvent always
      returns true. Touches go to the wrapper's OnTouchListener; child
      views (including MapView) never see them. Bubble is now purely a
      visualization — pan/zoom is impossible.
    • Drag-to-dismiss: when the user starts dragging (after passing
      TAP_SLOP), a translucent dark circle with a white X appears at
      bottom-center via a separate WindowManager view. Highlights red
      when the bubble's screen-space center is within hit slop of the X.
      Releasing on the X tears down the bubble AND fires onDismissed —
      DetectionService flips setOverlayEnabled(false) so the toggle and
      the bubble state stay in sync. Releasing elsewhere is a normal
      drag (just repositions). The dismiss zone uses FLAG_NOT_TOUCHABLE
      so it never steals the gesture; it's purely visual feedback.

    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

    Downloads