From 35869bdf90b4aa0b7b9064cea0bcdd5d95ad75fa Mon Sep 17 00:00:00 2001 From: grechka62 Date: Tue, 31 Mar 2026 14:42:27 +0300 Subject: [PATCH] Fix parent scroll with pinch-to-zoom on image commit_hash:be85e8988df8e571f1cfce999ff864d46f655ce2 --- .../com/yandex/div/zoom/ZoomTouchListener.kt | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/client/android/div-pinch-to-zoom/src/main/java/com/yandex/div/zoom/ZoomTouchListener.kt b/client/android/div-pinch-to-zoom/src/main/java/com/yandex/div/zoom/ZoomTouchListener.kt index 08228f3c2..e0b83506c 100644 --- a/client/android/div-pinch-to-zoom/src/main/java/com/yandex/div/zoom/ZoomTouchListener.kt +++ b/client/android/div-pinch-to-zoom/src/main/java/com/yandex/div/zoom/ZoomTouchListener.kt @@ -63,13 +63,21 @@ internal class ZoomTouchListener( return true } - MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> { + MotionEvent.ACTION_UP -> { if (touchController.isInZoom) { touchController.finishZoomTouch(view, event) return true } return view.tryDispatchGesture(event) } + + MotionEvent.ACTION_CANCEL -> { + if (touchController.isInZoom) { + touchController.finishZoomTouch(view, event) + return true + } + return view.handleTouchEvent(event) + } } return false @@ -126,11 +134,7 @@ internal class ZoomTouchListener( private fun View.dispatchEvent(downTime: Long, eventTime: Long, action: Int, x: Float, y: Float) { val event = MotionEvent.obtain(downTime, eventTime, action, x, y, 0) dispatchTouchEvent(event) - try { - event.recycle() - } catch (_: IllegalStateException) { - // ignore - } + event.recycle() } private fun offset(index: Int) = (viewLocation[index] - rootLocation[index]).toFloat()