Device log showed a single-frame scale pop (cur 0.504->0.694, a +38% jump UP while the pinch was still shrinking). Root cause: the absolute mapping targetScale = scaleStart * details.scale is only valid when details.scale is 1.0 at the moment scaleStart is captured. That holds at gesture start, but on a mid-gesture re-baseline (a finger blips 2->1->2, routine on Windows touch) a fresh scaleStart got multiplied by the recognizer's still-cumulative details.scale, popping the zoom then snapping back. Fix: track rawScaleAtBaseline and normalize details.scale against it so the cumulative reads 1.0 at every baseline. Extracted absolutePinchScale() pure solver + 5 unit tests covering the exact re-baseline scenario. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.6 KiB
2.6 KiB