diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt
index ab19bfccc..5cda701ca 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt
@@ -356,6 +356,11 @@ object SettingsReaderScreen : SearchableSettings {
subtitle = stringResource(R.string.split_tall_images_summary),
enabled = !isReleaseBuildType, // TODO: Show in release build when the feature is stable
),
+ Preference.PreferenceItem.SwitchPreference(
+ pref = readerPreferences.webtoonDoubleTapZoomEnabled(),
+ title = stringResource(R.string.pref_double_tap_zoom),
+ enabled = true,
+ ),
// SY -->
Preference.PreferenceItem.SwitchPreference(
pref = readerPreferences.pageTransitionsWebtoon(),
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt
index 8892144a7..809a726e4 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt
@@ -39,6 +39,8 @@ class ReaderPreferences(
// TODO: Enable in release build when the feature is stable
fun longStripSplitWebtoon() = preferenceStore.getBoolean("pref_long_strip_split_webtoon", !isReleaseBuildType)
+ fun webtoonDoubleTapZoomEnabled() = preferenceStore.getBoolean("pref_enable_double_tap_zoom_webtoon", true)
+
fun imageScaleType() = preferenceStore.getInt("pref_image_scale_type_key", 1)
fun zoomStart() = preferenceStore.getInt("pref_zoom_start_key", 1)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderReadingModeSettings.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderReadingModeSettings.kt
index c39cad038..b9377a657 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderReadingModeSettings.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderReadingModeSettings.kt
@@ -148,6 +148,8 @@ class ReaderReadingModeSettings @JvmOverloads constructor(context: Context, attr
binding.webtoonPrefsGroup.longStripSplit.isVisible = !isReleaseBuildType
binding.webtoonPrefsGroup.longStripSplit.bindToPreference(readerPreferences.longStripSplitWebtoon())
+ binding.webtoonPrefsGroup.doubleTapZoom.bindToPreference(readerPreferences.webtoonDoubleTapZoomEnabled())
+
// SY -->
binding.webtoonPrefsGroup.zoomOutWebtoon.bindToPreference(readerPreferences.webtoonEnableZoomOut())
binding.webtoonPrefsGroup.cropBordersContinuousVertical.bindToPreference(readerPreferences.cropBordersContinuousVertical())
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 1727a4773..d4c211c20 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
@@ -37,6 +37,11 @@ class WebtoonConfig(
var longStripSplitChangedListener: ((Boolean) -> Unit)? = null
+ var doubleTapZoom = true
+ private set
+
+ var doubleTapZoomChangedListener: ((Boolean) -> Unit)? = null
+
val theme = readerPreferences.readerTheme().get()
// SY -->
@@ -83,6 +88,12 @@ class WebtoonConfig(
},
)
+ readerPreferences.webtoonDoubleTapZoomEnabled()
+ .register(
+ { doubleTapZoom = it },
+ { doubleTapZoomChangedListener?.invoke(it) },
+ )
+
readerPreferences.readerTheme().changes()
.drop(1)
.distinctUntilChanged()
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonFrame.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonFrame.kt
index 35bb5104d..bc248fb9d 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonFrame.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonFrame.kt
@@ -25,6 +25,13 @@ class WebtoonFrame(context: Context) : FrameLayout(context) {
*/
private val flingDetector = GestureDetector(context, FlingListener())
+ var doubleTapZoom = true
+ set(value) {
+ field = value
+ recycler?.doubleTapZoom = value
+ scaleDetector.isQuickScaleEnabled = value
+ }
+
// SY -->
var enableZoomOut = false
set(value) {
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 617467d2a..8ffcb907f 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
@@ -50,6 +50,8 @@ class WebtoonRecyclerView @JvmOverloads constructor(
private val listener = GestureListener()
private val detector = Detector()
+ var doubleTapZoom = true
+
var tapListener: ((MotionEvent) -> Unit)? = null
var longTapListener: ((MotionEvent) -> Boolean)? = null
@@ -224,7 +226,7 @@ class WebtoonRecyclerView @JvmOverloads constructor(
}
fun onDoubleTapConfirmed(ev: MotionEvent) {
- if (!isZooming) {
+ if (!isZooming && doubleTapZoom) {
if (scaleX != DEFAULT_RATE) {
zoom(currentScale, DEFAULT_RATE, x, 0f, y, 0f)
} else {
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 134a607c2..6e1cf9735 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
@@ -145,6 +145,10 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr
ActivityCompat.recreate(activity)
}
+ config.doubleTapZoomChangedListener = {
+ frame.doubleTapZoom = it
+ }
+
config.navigationModeChangedListener = {
val showOnStart = config.navigationOverlayOnStart || config.forceNavigationOverlay
activity.binding.navigationOverlay.setNavigation(config.navigator, showOnStart)
diff --git a/app/src/main/res/layout/reader_webtoon_settings.xml b/app/src/main/res/layout/reader_webtoon_settings.xml
index b07942454..5eed3dc87 100644
--- a/app/src/main/res/layout/reader_webtoon_settings.xml
+++ b/app/src/main/res/layout/reader_webtoon_settings.xml
@@ -102,6 +102,15 @@
android:text="@string/pref_long_strip_split"
android:textColor="?android:attr/textColorSecondary" />
+
+
Rotate wide pages to fit
Flip orientation of rotated wide pages
Split tall images (BETA)
+ Double tap to zoom
Show content in cutout area
Animate page transitions
Double tap animation speed