diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt
index 7596a6ae5..259e1fb8c 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt
@@ -41,6 +41,8 @@ object PreferenceKeys {
const val readWithTapping = "reader_tap"
+ const val readWithLongTap = "reader_long_tap"
+
const val readWithVolumeKeys = "reader_volume_keys"
const val readWithVolumeKeysInverted = "reader_volume_keys_inverted"
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
index b9ab93f44..ee5b0b39e 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
@@ -69,6 +69,8 @@ class PreferencesHelper(val context: Context) {
fun readWithTapping() = rxPrefs.getBoolean(Keys.readWithTapping, true)
+ fun readWithLongTap() = rxPrefs.getBoolean(Keys.readWithLongTap, true)
+
fun readWithVolumeKeys() = rxPrefs.getBoolean(Keys.readWithVolumeKeys, false)
fun readWithVolumeKeysInverted() = rxPrefs.getBoolean(Keys.readWithVolumeKeysInverted, false)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt
index 0a726eef3..b798f3b49 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt
@@ -62,6 +62,7 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
show_page_number.bindToPreference(preferences.showPageNumber())
fullscreen.bindToPreference(preferences.fullscreen())
keepscreen.bindToPreference(preferences.keepScreenOn())
+ long_tap.bindToPreference(preferences.readWithLongTap())
}
/**
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/Pager.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/Pager.kt
index ceaf610f1..0a0114dcc 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/Pager.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/Pager.kt
@@ -25,7 +25,7 @@ open class Pager(
/**
* Long tap listener function to execute when a long tap is detected.
*/
- var longTapListener: ((MotionEvent) -> Unit)? = null
+ var longTapListener: ((MotionEvent) -> Boolean)? = null
/**
* Gesture listener that implements tap and long tap events.
@@ -38,8 +38,7 @@ open class Pager(
override fun onLongTapConfirmed(ev: MotionEvent) {
val listener = longTapListener
- if (listener != null) {
- listener.invoke(ev)
+ if (listener != null && listener.invoke(ev)) {
performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)
}
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt
index c5ebabc53..c07c7b65f 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt
@@ -19,6 +19,9 @@ class PagerConfig(private val viewer: PagerViewer, preferences: PreferencesHelpe
var tappingEnabled = true
private set
+ var longTapEnabled = true
+ private set
+
var volumeKeysEnabled = false
private set
@@ -44,6 +47,9 @@ class PagerConfig(private val viewer: PagerViewer, preferences: PreferencesHelpe
preferences.readWithTapping()
.register({ tappingEnabled = it })
+ preferences.readWithLongTap()
+ .register({ longTapEnabled = it })
+
preferences.pageTransitions()
.register({ usePageTransitions = it })
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 699c8b9b9..8f37257a5 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
@@ -92,11 +92,15 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
else -> activity.toggleMenu()
}
}
- pager.longTapListener = {
- val item = adapter.items.getOrNull(pager.currentItem)
- if (item is ReaderPage) {
- activity.onPageLongTap(item)
+ pager.longTapListener = f@ {
+ if (activity.menuVisible || config.longTapEnabled) {
+ val item = adapter.items.getOrNull(pager.currentItem)
+ if (item is ReaderPage) {
+ activity.onPageLongTap(item)
+ return@f true
+ }
}
+ false
}
config.imagePropertyChangedListener = {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt
index f575e4ac4..7ac8a220a 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt
@@ -19,6 +19,9 @@ class WebtoonConfig(preferences: PreferencesHelper = Injekt.get()) {
var tappingEnabled = true
private set
+ var longTapEnabled = true
+ private set
+
var volumeKeysEnabled = false
private set
@@ -35,6 +38,9 @@ class WebtoonConfig(preferences: PreferencesHelper = Injekt.get()) {
preferences.readWithTapping()
.register({ tappingEnabled = it })
+ preferences.readWithLongTap()
+ .register({ longTapEnabled = it })
+
preferences.cropBordersWebtoon()
.register({ imageCropBorders = it }, { imagePropertyChangedListener?.invoke() })
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonRecyclerView.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonRecyclerView.kt
index f838e62ed..eae782c93 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonRecyclerView.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonRecyclerView.kt
@@ -37,7 +37,7 @@ open class WebtoonRecyclerView @JvmOverloads constructor(
private val detector = Detector()
var tapListener: ((MotionEvent) -> Unit)? = null
- var longTapListener: ((MotionEvent) -> Unit)? = null
+ var longTapListener: ((MotionEvent) -> Boolean)? = null
override fun onMeasure(widthSpec: Int, heightSpec: Int) {
halfWidth = MeasureSpec.getSize(widthSpec) / 2
@@ -220,8 +220,7 @@ open class WebtoonRecyclerView @JvmOverloads constructor(
override fun onLongTapConfirmed(ev: MotionEvent) {
val listener = longTapListener
- if (listener != null) {
- listener.invoke(ev)
+ if (listener != null && listener.invoke(ev)) {
performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)
}
}
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 046c2bde9..6adee83c2 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
@@ -95,13 +95,17 @@ class WebtoonViewer(val activity: ReaderActivity) : BaseViewer {
else -> activity.toggleMenu()
}
}
- recycler.longTapListener = { event ->
- val child = recycler.findChildViewUnder(event.x, event.y)
- val position = recycler.getChildAdapterPosition(child)
- val item = adapter.items.getOrNull(position)
- if (item is ReaderPage) {
- activity.onPageLongTap(item)
+ recycler.longTapListener = f@ { event ->
+ if (activity.menuVisible || config.longTapEnabled) {
+ val child = recycler.findChildViewUnder(event.x, event.y)
+ val position = recycler.getChildAdapterPosition(child)
+ val item = adapter.items.getOrNull(position)
+ if (item is ReaderPage) {
+ activity.onPageLongTap(item)
+ return@f true
+ }
}
+ false
}
frame.layoutParams = ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt
index 66dd44597..943995385 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt
@@ -108,6 +108,11 @@ class SettingsReaderController : SettingsController() {
titleRes = R.string.pref_read_with_tapping
defaultValue = true
}
+ switchPreference {
+ key = Keys.readWithLongTap
+ titleRes = R.string.pref_read_with_long_tap
+ defaultValue = true
+ }
switchPreference {
key = Keys.readWithVolumeKeys
titleRes = R.string.pref_read_with_volume_keys
diff --git a/app/src/main/res/layout/reader_settings_sheet.xml b/app/src/main/res/layout/reader_settings_sheet.xml
index 85ab2c975..8b6354c5b 100644
--- a/app/src/main/res/layout/reader_settings_sheet.xml
+++ b/app/src/main/res/layout/reader_settings_sheet.xml
@@ -123,11 +123,20 @@
android:textColor="?android:attr/textColorSecondary"
app:layout_constraintTop_toBottomOf="@id/fullscreen" />
+
+
+ app:layout_constraintBottom_toBottomOf="@id/long_tap" />
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 520f70e43..a41d29aa4 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -180,6 +180,7 @@
Volume keys
Invert volume keys
Tapping
+ Long tap dialog
Background color
White
Black
diff --git a/build.gradle b/build.gradle
index 09b0d46cf..cef1ec000 100644
--- a/build.gradle
+++ b/build.gradle
@@ -19,9 +19,9 @@ buildscript {
allprojects {
repositories {
google()
- jcenter()
maven { url "https://jitpack.io" }
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
- maven { url "https://dl.bintray.com/inorichi/maven" }
+ jcenter()
+ maven { url "https://dl.bintray.com/inorichi/maven" }
}
}