From a96079c14c2dcd83cc2ab0909a224d2436ccc659 Mon Sep 17 00:00:00 2001 From: arkon Date: Thu, 11 Jan 2024 18:36:40 -0500 Subject: [PATCH] Fixed tap controls not working when zoomed in (#10378) Co-authored-by: Paloys (cherry picked from commit c65a9aecf5ed228550fd994e62a16fc2300c344d) --- .../tachiyomi/ui/reader/viewer/pager/PagerViewer.kt | 9 ++++++++- .../tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt index 546f63799..efac39491 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt @@ -111,7 +111,14 @@ abstract class PagerViewer(val activity: ReaderActivity) : Viewer { // SY <-- ) pager.tapListener = { event -> - val pos = PointF(event.x / pager.width, event.y / pager.height) + val viewPosition = IntArray(2) + pager.getLocationOnScreen(viewPosition) + val viewPositionRelativeToWindow = IntArray(2) + pager.getLocationInWindow(viewPositionRelativeToWindow) + val pos = PointF( + (event.rawX - viewPosition[0] + viewPositionRelativeToWindow[0]) / pager.width, + (event.rawY - viewPosition[1] + viewPositionRelativeToWindow[1]) / pager.height, + ) when (config.navigator.getAction(pos)) { NavigationRegion.MENU -> activity.toggleMenu() NavigationRegion.NEXT -> moveToNext() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt index 75e5c18e9..06825e0a7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt @@ -118,7 +118,14 @@ class WebtoonViewer( }, ) recycler.tapListener = { event -> - val pos = PointF(event.x / recycler.width, event.y / recycler.height) + val viewPosition = IntArray(2) + recycler.getLocationOnScreen(viewPosition) + val viewPositionRelativeToWindow = IntArray(2) + recycler.getLocationInWindow(viewPositionRelativeToWindow) + val pos = PointF( + (event.rawX - viewPosition[0] + viewPositionRelativeToWindow[0]) / recycler.width, + (event.rawY - viewPosition[1] + viewPositionRelativeToWindow[1]) / recycler.height, + ) when (config.navigator.getAction(pos)) { NavigationRegion.MENU -> activity.toggleMenu() NavigationRegion.NEXT, NavigationRegion.RIGHT -> scrollDown()