Fix long-press move jitter closing settings

This commit is contained in:
7015725
2026-05-19 03:02:52 +08:00
parent 6d8f50267c
commit 63fdfb813e
4 changed files with 26 additions and 8 deletions

View File

@@ -97,6 +97,7 @@ var ConfigValidator = {
// 交互配置 // 交互配置
LONG_PRESS_MS: { type: "int", min: 200, max: 2000, default: 600 }, LONG_PRESS_MS: { type: "int", min: 200, max: 2000, default: 600 },
LONG_PRESS_TRIGGERED_MOVE_SLOP_DP: { type: "int", min: 8, max: 80, default: 28 },
LONG_PRESS_VIBRATE_MS: { type: "int", min: 10, max: 100, default: 40 }, LONG_PRESS_VIBRATE_MS: { type: "int", min: 10, max: 100, default: 40 },
CLICK_SLOP_DP: { type: "int", min: 2, max: 20, default: 6 }, CLICK_SLOP_DP: { type: "int", min: 2, max: 20, default: 6 },
TOOLAPP_BACK_EDGE_WIDTH_DP: { type: "int", min: 1, max: 120, default: 22 }, TOOLAPP_BACK_EDGE_WIDTH_DP: { type: "int", min: 1, max: 120, default: 22 },
@@ -731,6 +732,7 @@ var ConfigManager = {
LONG_PRESS_VIBRATE_MS: 18, LONG_PRESS_VIBRATE_MS: 18,
ENABLE_LONG_PRESS: true, ENABLE_LONG_PRESS: true,
LONG_PRESS_MS: 520, LONG_PRESS_MS: 520,
LONG_PRESS_TRIGGERED_MOVE_SLOP_DP: 28,
CLICK_SLOP_DP: 6, CLICK_SLOP_DP: 6,
TOOLAPP_BACK_EDGE_WIDTH_DP: 22, TOOLAPP_BACK_EDGE_WIDTH_DP: 22,
TOOLAPP_BACK_COMMIT_DISTANCE_DP: 72, TOOLAPP_BACK_COMMIT_DISTANCE_DP: 72,
@@ -849,6 +851,7 @@ var ConfigManager = {
{ key: "TOOLAPP_BACK_PROGRESS_DISTANCE_DP", name: "设置页返回动画距离", type: "int", min: 1, max: 720, step: 1 }, { key: "TOOLAPP_BACK_PROGRESS_DISTANCE_DP", name: "设置页返回动画距离", type: "int", min: 1, max: 720, step: 1 },
{ key: "ENABLE_LONG_PRESS", name: "启用长按", type: "bool" }, { key: "ENABLE_LONG_PRESS", name: "启用长按", type: "bool" },
{ key: "LONG_PRESS_MS", name: "长按判定(ms)", type: "int", min: 200, max: 2000, step: 10 }, { key: "LONG_PRESS_MS", name: "长按判定(ms)", type: "int", min: 200, max: 2000, step: 10 },
{ key: "LONG_PRESS_TRIGGERED_MOVE_SLOP_DP", name: "长按后抖动容忍距离", type: "int", min: 8, max: 80, step: 1 },
{ key: "LONG_PRESS_HAPTIC_ENABLE", name: "长按震动反馈", type: "bool" }, { key: "LONG_PRESS_HAPTIC_ENABLE", name: "长按震动反馈", type: "bool" },
{ key: "LONG_PRESS_VIBRATE_MS", name: "震动时长(ms)", type: "int", min: 1, max: 120, step: 1 }, { key: "LONG_PRESS_VIBRATE_MS", name: "震动时长(ms)", type: "int", min: 1, max: 120, step: 1 },
@@ -883,7 +886,7 @@ var ConfigManager = {
var needReset = false; var needReset = false;
if (s) { if (s) {
var sStr = JSON.stringify(s); var sStr = JSON.stringify(s);
if (sStr.indexOf("ENABLE_SNAP_TO_EDGE") < 0 || sStr.indexOf("ENABLE_ANIMATIONS") < 0 || sStr.indexOf("BALL_IDLE_ALPHA") < 0 || sStr.indexOf("PANEL_POS_GRAVITY") < 0 || sStr.indexOf("single_choice") < 0 || sStr.indexOf("ball_shortx_icon") < 0 || sStr.indexOf("ball_color") < 0 || sStr.indexOf("SETTINGS_THEME") < 0 || sStr.indexOf("BALL_BG_COLOR_HEX") < 0 || sStr.indexOf("BALL_ICON_SIZE_DP") < 0 || sStr.indexOf("TOOLAPP_BACK_EDGE_WIDTH_DP") < 0 || sStr.indexOf("TOOLAPP_BACK_COMMIT_DISTANCE_DP") < 0 || sStr.indexOf("TOOLAPP_BACK_PROGRESS_DISTANCE_DP") < 0) { if (sStr.indexOf("ENABLE_SNAP_TO_EDGE") < 0 || sStr.indexOf("ENABLE_ANIMATIONS") < 0 || sStr.indexOf("BALL_IDLE_ALPHA") < 0 || sStr.indexOf("PANEL_POS_GRAVITY") < 0 || sStr.indexOf("single_choice") < 0 || sStr.indexOf("ball_shortx_icon") < 0 || sStr.indexOf("ball_color") < 0 || sStr.indexOf("SETTINGS_THEME") < 0 || sStr.indexOf("BALL_BG_COLOR_HEX") < 0 || sStr.indexOf("BALL_ICON_SIZE_DP") < 0 || sStr.indexOf("TOOLAPP_BACK_EDGE_WIDTH_DP") < 0 || sStr.indexOf("TOOLAPP_BACK_COMMIT_DISTANCE_DP") < 0 || sStr.indexOf("TOOLAPP_BACK_PROGRESS_DISTANCE_DP") < 0 || sStr.indexOf("LONG_PRESS_TRIGGERED_MOVE_SLOP_DP") < 0) {
needReset = true; needReset = true;
} }
@@ -916,7 +919,8 @@ var ConfigManager = {
schemaItemDiffers("BALL_BG_COLOR_HEX", ["name", "type"]) || schemaItemDiffers("BALL_BG_COLOR_HEX", ["name", "type"]) ||
schemaItemDiffers("TOOLAPP_BACK_EDGE_WIDTH_DP", ["name", "type", "min", "max", "step"]) || schemaItemDiffers("TOOLAPP_BACK_EDGE_WIDTH_DP", ["name", "type", "min", "max", "step"]) ||
schemaItemDiffers("TOOLAPP_BACK_COMMIT_DISTANCE_DP", ["name", "type", "min", "max", "step"]) || schemaItemDiffers("TOOLAPP_BACK_COMMIT_DISTANCE_DP", ["name", "type", "min", "max", "step"]) ||
schemaItemDiffers("TOOLAPP_BACK_PROGRESS_DISTANCE_DP", ["name", "type", "min", "max", "step"])) { schemaItemDiffers("TOOLAPP_BACK_PROGRESS_DISTANCE_DP", ["name", "type", "min", "max", "step"]) ||
schemaItemDiffers("LONG_PRESS_TRIGGERED_MOVE_SLOP_DP", ["name", "type", "min", "max", "step"])) {
needReset = true; needReset = true;
} }
} }

View File

@@ -2052,6 +2052,20 @@ FloatBallAppWM.prototype.setupTouchListener = function() {
var dx = Math.round(curRawX - startRawX); var dx = Math.round(curRawX - startRawX);
var dy = Math.round(curRawY - startRawY); var dy = Math.round(curRawY - startRawY);
var longPressMoveSlopDp = Number(self.config.LONG_PRESS_TRIGGERED_MOVE_SLOP_DP || 28);
if (isNaN(longPressMoveSlopDp)) longPressMoveSlopDp = 28;
if (longPressMoveSlopDp < 8) longPressMoveSlopDp = 8;
if (longPressMoveSlopDp > 80) longPressMoveSlopDp = 80;
var longPressMoveSlop = self.dp(longPressMoveSlopDp);
if (self.state.longPressTriggered) {
// 长按已经触发设置页后,手指未抬起期间的移动全部消费,避免进入普通拖动逻辑并误关设置页。
if (Math.abs(dx) <= longPressMoveSlop && Math.abs(dy) <= longPressMoveSlop) {
return true;
}
return true;
}
if (!self.state.dragging) { if (!self.state.dragging) {
if (Math.abs(dx) > slop || Math.abs(dy) > slop) { if (Math.abs(dx) > slop || Math.abs(dy) > slop) {
self.state.dragging = true; self.state.dragging = true;

View File

@@ -2,8 +2,8 @@
"alg": "SHA256withRSA", "alg": "SHA256withRSA",
"files": { "files": {
"th_01_base.js": { "th_01_base.js": {
"sha256": "ea06cb734ad4ccdcec06d746771f6e3c71154d1acf02192edd2b9664109a8e31", "sha256": "6b7a51c97f76b797b176c8fcf712dbafb8d33ebab448d0c7574f26568dcd14df",
"size": 55958 "size": 56392
}, },
"th_02_core.js": { "th_02_core.js": {
"sha256": "15bb9bfbd19a673d442e221b0a00a456ed5f87af2666b9c73b117d6223faeecd", "sha256": "15bb9bfbd19a673d442e221b0a00a456ed5f87af2666b9c73b117d6223faeecd",
@@ -58,8 +58,8 @@
"size": 262019 "size": 262019
}, },
"th_15_extra.js": { "th_15_extra.js": {
"sha256": "bf28b503ea5e2f023952016a57a421ecc8f8ff57844f39571f01ca18ebbcdad4", "sha256": "36a7adf784921de6f4c66a772175ec99e61c9f5be8545cc6cb394c0f96601033",
"size": 97293 "size": 97990
}, },
"th_16_entry.js": { "th_16_entry.js": {
"sha256": "e7c99c3dfbd6aedab05551426955081ae6cae034754f2f557cefa01dc75dc001", "sha256": "e7c99c3dfbd6aedab05551426955081ae6cae034754f2f557cefa01dc75dc001",
@@ -68,5 +68,5 @@
}, },
"keyId": "toolhub-targets-2026-rsa3072", "keyId": "toolhub-targets-2026-rsa3072",
"schema": 2, "schema": 2,
"version": 20260518170217 "version": 20260518190147
} }

View File

@@ -1 +1 @@
auvFOg4qSLMH+ut6SdgXK8I8smXZZfdI00iUQbFrf7pWIJz/mCzNBJf4DO4B5jn4Xf/TWyNHx956nGPnW9hYc79hehc217udD1f0xuWgoLynMRMqgwKKAd+pSz6gZ6zHZtkr/VXsjROBpoXJ8Z5ei2NHbxbPhYJssF2OLSoznhWYHOLENgWjul6M8zBrEn63GfyYp04p2kmXr6EeHyvK4qMSUmC9wfjgfBnKFt/LJcUsQaS1ZeZsJ7h95IC1vPymDfhcxulh/wkiOqRwjKyGJhWD1ChfEMH8+A9RowG2DTZv4tetvmr4xlXiL//MJDdW9wSH7u8oIkH+2oKni0XWIP3egMcATE/wkIOEQEgyJZiC/pnxpuYqZzOjHIsud7xyDlCbouFyAbEoZ1h1YZTCFbl93Y4Kn2pXigfa7YJoCtJRskqInGCY8Kpggi10XK1OMU8b9r3h33cBUwQyQpa22q8FqQQEDX4lsGq5oj6kFZJMf1i7DKzKKMwSX+PVTTTc VZkj5FB7IIEkKImiDaunHarfhGsZ8aXkVOeGHBdwrapSZJ9AZZ/7CMt6qSG3PI4GBHfcp229jIWWOI5T6rCND1piKdLmYAkPNjXW47X0xaB6YMvyXKALuPVvm+mFcAqNXBtOlQNjWPAnimdypVmlnzc1wIkGAPWTJRpDRD2bSvHFbZeFyZp8qhyAu5pR4GisecgEZ5gqTgE+BDo+gs3LjpLphekeg9bZWzKX4p1hsttPM2oC6rMLW4SkPaqVsOWJOxJgOAaoZP9dR2bh4/W97WM1dGqxrdANmofg+wpwA2p7KH9DUxPdJqwIe6adCiLP/jXwb2twLuZvY5AuMWj8Im4c4yAmUrE2RdocHl6NStykcx3b9WlQPHPHBfYHFka47+3qHSYPnB5IyxCGMC1d4XxZ34nhbc7yE9aFarjQC9ky1KtBS2hvM58MzE87GiudEb2DJRNYbebdh0/pocnDSXb1rKy16TQWFBk9r1xS7F/mviDN9vKsL1My47q6kLrd