From 493c8b09439d35f15ff9760ab7effe7aff28d39e Mon Sep 17 00:00:00 2001 From: arkon Date: Mon, 3 Aug 2020 12:17:28 -0400 Subject: [PATCH] Adjust vertical reading mode tap zones (closes #3551) Basically L shapes, where top/left goes back, bottom/right goes forward, and middle opens the menu. --- .../ui/reader/viewer/pager/PagerViewer.kt | 39 ++++++++++++------- .../ui/reader/viewer/webtoon/WebtoonViewer.kt | 29 ++++++++++---- 2 files changed, 45 insertions(+), 23 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 bea3252814..a4f5a3e95f 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 @@ -80,29 +80,38 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer { isIdle = state == ViewPager.SCROLL_STATE_IDLE } }) - pager.tapListener = { event -> + pager.tapListener = f@{ event -> + if (!config.tappingEnabled) { + activity.toggleMenu() + return@f + } + + val positionX = event.x + val positionY = event.y + val topSideTap = positionY < pager.height * 0.25f + val bottomSideTap = positionY > pager.height * 0.75f + val leftSideTap = positionX < pager.width * 0.33f + val rightSideTap = positionX > pager.width * 0.66f + val invertMode = config.tappingInverted + val invertVertical = invertMode == TappingInvertMode.VERTICAL || invertMode == TappingInvertMode.BOTH + val invertHorizontal = invertMode == TappingInvertMode.HORIZONTAL || invertMode == TappingInvertMode.BOTH if (this is VerticalPagerViewer) { - val positionY = event.y - val tappingInverted = invertMode == TappingInvertMode.VERTICAL || invertMode == TappingInvertMode.BOTH - val topSideTap = positionY < pager.height * 0.33f && config.tappingEnabled - val bottomSideTap = positionY > pager.height * 0.66f && config.tappingEnabled - when { - topSideTap && !tappingInverted || bottomSideTap && tappingInverted -> moveLeft() - bottomSideTap && !tappingInverted || topSideTap && tappingInverted -> moveRight() + topSideTap && !invertVertical || bottomSideTap && invertVertical -> moveLeft() + bottomSideTap && !invertVertical || topSideTap && invertVertical -> moveRight() + + leftSideTap && !invertHorizontal || rightSideTap && invertHorizontal -> moveLeft() + rightSideTap && !invertHorizontal || leftSideTap && invertHorizontal -> moveRight() + else -> activity.toggleMenu() } } else { - val positionX = event.x - val tappingInverted = invertMode == TappingInvertMode.HORIZONTAL || invertMode == TappingInvertMode.BOTH - val leftSideTap = positionX < pager.width * 0.33f && config.tappingEnabled - val rightSideTap = positionX > pager.width * 0.66f && config.tappingEnabled - when { - leftSideTap && !tappingInverted || rightSideTap && tappingInverted -> moveLeft() - rightSideTap && !tappingInverted || leftSideTap && tappingInverted -> moveRight() + leftSideTap && !invertHorizontal || rightSideTap && invertHorizontal -> moveLeft() + rightSideTap && !invertHorizontal || leftSideTap && invertHorizontal -> moveRight() + else -> activity.toggleMenu() } } 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 deed312371..bb927f923d 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 @@ -93,17 +93,30 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr } } }) - recycler.tapListener = { event -> - val positionY = event.rawY - val invertMode = config.tappingInverted - val topSideTap = positionY < recycler.height * 0.33f && config.tappingEnabled - val bottomSideTap = positionY > recycler.height * 0.66f && config.tappingEnabled + recycler.tapListener = f@{ event -> + if (!config.tappingEnabled) { + activity.toggleMenu() + return@f + } - val tappingInverted = invertMode == TappingInvertMode.VERTICAL || invertMode == TappingInvertMode.BOTH + val positionX = event.rawX + val positionY = event.rawY + val topSideTap = positionY < recycler.height * 0.25f + val bottomSideTap = positionY > recycler.height * 0.75f + val leftSideTap = positionX < recycler.width * 0.33f + val rightSideTap = positionX > recycler.width * 0.66f + + val invertMode = config.tappingInverted + val invertVertical = invertMode == TappingInvertMode.VERTICAL || invertMode == TappingInvertMode.BOTH + val invertHorizontal = invertMode == TappingInvertMode.HORIZONTAL || invertMode == TappingInvertMode.BOTH when { - topSideTap && !tappingInverted || bottomSideTap && tappingInverted -> scrollUp() - bottomSideTap && !tappingInverted || topSideTap && tappingInverted -> scrollDown() + topSideTap && !invertVertical || bottomSideTap && invertVertical -> scrollUp() + bottomSideTap && !invertVertical || topSideTap && invertVertical -> scrollDown() + + leftSideTap && !invertHorizontal || rightSideTap && invertHorizontal -> scrollUp() + rightSideTap && !invertHorizontal || leftSideTap && invertHorizontal -> scrollDown() + else -> activity.toggleMenu() } }