Fix ToolApp screen edge drag follow

This commit is contained in:
Hermes
2026-05-22 06:00:15 +08:00
parent be2156a634
commit dcd3fcb9ee
3 changed files with 74 additions and 8 deletions

View File

@@ -562,6 +562,7 @@ FloatBallAppWM.prototype.closeToolApp = function() {
FloatBallAppWM.prototype.clearToolAppBackPreview = function(resetCurrent) {
try {
try { this.resetToolAppBackWindowFollow(); } catch(eFollowClear) {}
var prev = this.state.toolAppBackPreviewView;
var root = this.state.toolAppRoot;
if (prev && root) {
@@ -767,7 +768,62 @@ FloatBallAppWM.prototype.prepareToolAppBackPreview = function(edge) {
return false;
};
FloatBallAppWM.prototype.applyToolAppBackPreviewProgress = function(edge, progress) {
FloatBallAppWM.prototype.applyToolAppBackWindowFollow = function(edge, dragPx) {
try {
if (!this.state || !this.state.wm || !this.state.viewerPanel || !this.state.viewerPanelLp) return false;
var lp = this.state.viewerPanelLp;
var dir = Number(edge) === 1 ? -1 : 1;
if (this.state.toolAppBackPreviewOriginX === null || this.state.toolAppBackPreviewOriginX === undefined) {
this.state.toolAppBackPreviewOriginX = Number(lp.x || 0);
}
var raw = Number(dragPx || 0);
if (isNaN(raw)) raw = 0;
if (raw < 0) raw = -raw;
var maxFollow = this.dp(160);
try {
var w = Number(lp.width || 0);
if (w > 0) maxFollow = Math.min(maxFollow, Math.floor(w * 0.38));
} catch(eW) {}
var follow = Math.min(raw, maxFollow);
var nx = Math.round(Number(this.state.toolAppBackPreviewOriginX || 0) + dir * follow);
if (lp.x !== nx) {
lp.x = nx;
this.state.wm.updateViewLayout(this.state.viewerPanel, lp);
}
return true;
} catch(e) {
safeLog(this.L, 'w', 'apply tool app window follow fail: ' + String(e));
}
return false;
};
FloatBallAppWM.prototype.resetToolAppBackWindowFollow = function() {
try {
if (!this.state || !this.state.wm || !this.state.viewerPanel || !this.state.viewerPanelLp) return false;
if (this.state.toolAppBackPreviewOriginX === null || this.state.toolAppBackPreviewOriginX === undefined) return false;
var lp = this.state.viewerPanelLp;
var ox = Number(this.state.toolAppBackPreviewOriginX || 0);
if (lp.x !== ox) {
lp.x = ox;
this.state.wm.updateViewLayout(this.state.viewerPanel, lp);
}
this.state.toolAppBackPreviewOriginX = null;
return true;
} catch(e) {
safeLog(this.L, 'w', 'reset tool app window follow fail: ' + String(e));
}
return false;
};
FloatBallAppWM.prototype.applyToolAppBackPreviewProgress = function(edge, progress, dragPx) {
try {
var p = Number(progress || 0);
if (isNaN(p)) p = 0;
@@ -784,8 +840,13 @@ FloatBallAppWM.prototype.applyToolAppBackPreviewProgress = function(edge, progre
try { w = Number((this.state.toolAppRoot && this.state.toolAppRoot.getWidth && this.state.toolAppRoot.getWidth()) || 0); } catch (eW1) {}
}
if (!w || w < this.dp(120)) w = this.dp(320);
try {
if (dragPx !== undefined && dragPx !== null) {
this.applyToolAppBackWindowFollow(edge, dragPx);
}
} catch(eFollow) {}
if (body) {
body.setTranslationX(dir * w * eased);
body.setTranslationX(dir * w * eased * 0.42);
body.setAlpha(1.0 - 0.10 * eased);
var s = 1.0 - 0.015 * eased;
body.setScaleX(s);
@@ -820,6 +881,7 @@ FloatBallAppWM.prototype.finishToolAppBackPreview = function(edge, complete) {
try { if (prev) prev.animate().translationX(0).alpha(1).scaleX(1).scaleY(1).setDuration(180).setInterpolator(decel).start(); } catch(ePrev) {}
body.animate().translationX(dir * w).alpha(0.90).scaleX(0.985).scaleY(0.985).setDuration(180).setInterpolator(decel).withEndAction(new java.lang.Runnable({
run: function() {
try { self.resetToolAppBackWindowFollow(); } catch(eResetFollow) {}
try { self.clearToolAppBackPreview(true); } catch (eClear) {}
try { self.popToolAppPage("edge_swipe_back"); } catch (ePop) {}
}
@@ -830,12 +892,16 @@ FloatBallAppWM.prototype.finishToolAppBackPreview = function(edge, complete) {
var cancelInterp = new android.view.animation.AccelerateDecelerateInterpolator();
try { if (prev) prev.animate().translationX(-dir * self.dp(24)).alpha(0.88).scaleX(0.975).scaleY(0.975).setDuration(200).setInterpolator(cancelInterp).start(); } catch(ePrev2) {}
body.animate().translationX(0).alpha(1).scaleX(1).scaleY(1).setDuration(200).setInterpolator(cancelInterp).withEndAction(new java.lang.Runnable({
run: function() { try { self.clearToolAppBackPreview(true); } catch (eClear2) {} }
run: function() {
try { self.resetToolAppBackWindowFollow(); } catch(eResetFollow2) {}
try { self.clearToolAppBackPreview(true); } catch (eClear2) {}
}
})).start();
} else {
this.clearToolAppBackPreview(true);
}
} catch (e) {
try { this.resetToolAppBackWindowFollow(); } catch(eResetFollow3) {}
this.clearToolAppBackPreview(true);
safeLog(this.L, 'w', "finish tool app back preview fail: " + String(e));
}
@@ -875,7 +941,7 @@ FloatBallAppWM.prototype.createToolAppEdgeBackStrip = function(edge) {
if (triggerDp > 720) triggerDp = 720;
var triggerDistance = self.dp(triggerDp);
var p = Math.min(1, Math.abs(mx) / triggerDistance);
self.applyToolAppBackPreviewProgress(edge, p);
self.applyToolAppBackPreviewProgress(edge, p, Math.abs(mx));
}
return true;
}

View File

@@ -58,8 +58,8 @@
"size": 304993
},
"th_15_extra.js": {
"sha256": "3b89dc66125a7ced5c4a9db43e4b2098ff0f75c7901783299989fb965bf49092",
"size": 106239
"sha256": "2cfa025fb31802d45efec86b93515abafdc15b0213b29e449f4c1508a11aeff6",
"size": 108559
},
"th_16_entry.js": {
"sha256": "6c59d9891cd010647f84c3db93f1cf95c7bbfb758470ea21044bf72eb8ff73d1",
@@ -68,5 +68,5 @@
},
"keyId": "toolhub-targets-2026-rsa3072",
"schema": 2,
"version": 20260521215143
"version": 20260521215947
}

View File

@@ -1 +1 @@
ki6nmRhwoltwi9Sf1YkxhFONhxIWJOFcI8E+ccQBq43IEspPEqloDva7Tf0cjiJnx5Gng2mMAIWY+2hlxqd//W5ck/HAkadwqtH+f444U7UW54RTa/NqJ8xD5CfLmmJCdD4kU8qy9+X41qASGqp4sKrW4aToUDGbYWQi/arznv/D7C660v1j5IQAGMnWrOtGEq5ZukMg4emVSXeb8b6ULeBxScQnp52WP6TzHClaHQIeoa59M2/PTRmcpsWhA6yx6xjieF9oo4C6YTLAha3BnIE8cH4xa/eM1LbqtO/U9+/2qOgGpChW2XmEg9V0LxpQ6tE4wuYlYe2+pqBCk3CZxo0gx0j11vJBA1HAEv3h3fqzXsixoPTl/XCu5LlhqeNN3/7AY6d2h2lHBSSkud0XEVtJ3uznbqr00zoZ7otbf7Ns7kmBTkb9JB5OXdbDPxd0bFZmCBYKUb1vAZTYp7yVR8RpzQwAlkARoJd+d03iYjFeuvPViL8xmshjw2NRtsaR
Q7x3zGDrx6H/5q0xEOY6JPD22CPaCXutvySNnKfIevW3cu+Db7vS5zDKhWm9tmuDkx2PMA4T0I673Tz5TPViqhn003j+5++tpaJQI3cCOFgLjH9QEPswBCglul9ge3vOGEiTJsjIYzqfzLDRWk4S7cdiw4Myzl9apKRzAdvQP7EPM88Dx9fu0xlLo6yZ8UQQ2UaDruxy4O2F7yIxuihNEYPy0QlaFivD/lu9TZxlUoY74w/MYsUrP7TGPHFp9Y84MO8IF/ZUaopqtPRVNCGSGWpzFNsZLE3hIPghg6Bm6YYApML8PDLFu3kEHxH0aUUZMXgbZQBCfFsCbmSQw3fL31seZpWX4QEtWQ8u3T+RlKOpT8HnC3VjoRXoqvvlOFG9yAiXi+b75JUF3geVOX4HHWOeMEOtO58s+f977pA/kRDksO3rzNdGa0ywZ6m3nFEMWrfhwqVyyp0vKlnVtJb+62wWqXsUxhOHWH9+r1dmeibObVtcrKBJlU2wJCez8Pbt