diff --git a/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt b/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt
index 089caf3a2..e4d49db12 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt
@@ -88,6 +88,9 @@ object Settings : DataStorePreferences(null) {
var lastDawnDay by longPref("last_dawn_day", 0)
var lastUpdateDay by longPref("last_update_day", 0)
+ // TODO: Remove this after swipe gestures are correctly handled in compose
+ var touchSlopFactor by intPref("touch_slop", 3)
+
init {
if ("CN" == Locale.getDefault().country) {
edit {
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt
index 4f4c75b0a..df81efc55 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt
@@ -244,7 +244,7 @@ class MainActivity : EhActivity() {
BackHandler(drawerState.isOpen) {
closeDrawer()
}
- LocalTouchSlopProvider(3f) {
+ LocalTouchSlopProvider(Settings.touchSlopFactor.toFloat()) {
ModalNavigationDrawer(
drawerContent = {
ModalDrawerSheet(
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/HistoryFragment.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/HistoryFragment.kt
index ee1970891..a8c7c57c5 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/HistoryFragment.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/HistoryFragment.kt
@@ -62,6 +62,7 @@ import androidx.paging.compose.itemContentType
import androidx.paging.compose.itemKey
import com.hippo.ehviewer.EhDB
import com.hippo.ehviewer.R
+import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.Settings.listThumbSize
import com.hippo.ehviewer.icons.EhIcons
import com.hippo.ehviewer.icons.big.History
@@ -143,7 +144,7 @@ fun HistoryScreen(navigator: NavController) {
true
},
)
- LocalTouchSlopProvider(3f) {
+ LocalTouchSlopProvider(Settings.touchSlopFactor.toFloat()) {
SwipeToDismiss(
state = dismissState,
background = {},
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt
index b4a600886..5ec90bfce 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt
@@ -139,6 +139,13 @@ fun AdvancedScreen(navigator: DestinationsNavigator) {
title = stringResource(id = R.string.preload_thumb_aggressively),
value = Settings::preloadThumbAggressively,
)
+ IntSliderPreference(
+ maxValue = 5,
+ minValue = 1,
+ title = stringResource(id = R.string.settings_advanced_touch_slop),
+ summary = stringResource(id = R.string.settings_advanced_touch_slop_summary),
+ value = Settings::touchSlopFactor,
+ )
var userAgent by Settings::userAgent.observed
val userAgentTitle = stringResource(id = R.string.user_agent)
Preference(
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 2761ecac9..763ebecc7 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -381,6 +381,8 @@
App 界面语言
[实验性] Cronet 集成
使用 Cronet 下载图片(性能更好)
+ [实验性] 触摸溢出系数
+ 增大此项将降低滑动手势敏感度
导出数据
保存数据至外置存储器,例如下载列表,快速搜索列表
已导出数据至 %s
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f11de4dc2..df9340d8c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -425,6 +425,8 @@
App language
[Experimental] Cronet integration
Use Cronet for image download (better performance)
+ [Experimental] Touch slop factor
+ Increasing this will reduce swipe gesture sensitivity
Export data
Save data like download list, quick search list, to external storage
Exported data to %s