diff --git a/code/th_15_extra.js b/code/th_15_extra.js index fe80de4..f3c97eb 100644 --- a/code/th_15_extra.js +++ b/code/th_15_extra.js @@ -571,6 +571,10 @@ FloatBallAppWM.prototype.clearToolAppBackPreview = function(resetCurrent) { this.state.toolAppBackPreviewView = null; this.state.toolAppBackPreviewRoute = null; this.state.toolAppBackPreviewReady = false; + if (resetCurrent && root) { + try { root.animate().cancel(); } catch (eCancelRoot) {} + try { root.setTranslationX(0); root.setAlpha(1); root.setScaleX(1); root.setScaleY(1); } catch (eRoot) {} + } var body = this.state.toolAppBody; if (resetCurrent && body) { try { body.animate().cancel(); } catch (eCancel) {} @@ -872,23 +876,51 @@ FloatBallAppWM.prototype.applyToolAppBackPreviewProgress = function(edge, progre } } catch(eLog) {} + var root = this.state.toolAppRoot; + var rootMove = dir * w * eased * 0.42; + try { + if (dragPx !== undefined && dragPx !== null) { + var rawDrag = Number(dragPx || 0); + if (isNaN(rawDrag)) rawDrag = 0; + if (rawDrag < 0) rawDrag = -rawDrag; + rootMove = dir * Math.min(rawDrag, Math.floor(w * 0.45)); + } + } catch(eRootMove) {} + + try { + if (root) { + try { root.animate().cancel(); } catch(eCancelRoot) {} + root.setTranslationX(rootMove); + } + } catch(eRootSet) { + safeLog(this.L, 'w', 'set tool app root translation fail: ' + String(eRootSet)); + } + if (body) { - var bodyMove = dir * w * eased * 0.42; - try { - if (dragPx !== undefined && dragPx !== null) { - var rawDrag = Number(dragPx || 0); - if (isNaN(rawDrag)) rawDrag = 0; - if (rawDrag < 0) rawDrag = -rawDrag; - bodyMove = dir * Math.min(rawDrag, Math.floor(w * 0.45)); - } - } catch(eBodyMove) {} try { body.animate().cancel(); } catch(eCancelBody) {} - body.setTranslationX(bodyMove); + body.setTranslationX(0); body.setAlpha(1.0 - 0.10 * eased); var s = 1.0 - 0.015 * eased; body.setScaleX(s); body.setScaleY(s); } + + try { + var rootTx = root ? root.getTranslationX() : 0; + var bodyTx = body ? body.getTranslationX() : 0; + var lpX = (this.state.viewerPanelLp ? this.state.viewerPanelLp.x : 0); + var nowLog2 = Date.now(); + if (!this.state._lastBackMoveLog || nowLog2 - this.state._lastBackMoveLog > 300) { + safeLog(this.L, 'd', + 'back move apply edge=' + String(edge) + + ' rootMove=' + String(rootMove) + + ' rootTx=' + String(rootTx) + + ' bodyTx=' + String(bodyTx) + + ' lpX=' + String(lpX) + ); + this.state._lastBackMoveLog = nowLog2; + } + } catch(eMoveLog) {} if (prev) { prev.setAlpha(0.88 + 0.12 * eased); prev.setTranslationX(-dir * this.dp(24) * (1.0 - eased)); @@ -904,11 +936,12 @@ FloatBallAppWM.prototype.applyToolAppBackPreviewProgress = function(edge, progre FloatBallAppWM.prototype.finishToolAppBackPreview = function(edge, complete) { try { var self = this; + var root = this.state.toolAppRoot; var body = this.state.toolAppBody; var prev = this.state.toolAppBackPreviewView; var dir = Number(edge) === 1 ? -1 : 1; var decel = new android.view.animation.DecelerateInterpolator(); - if (complete && body) { + if (complete && root) { var w = 0; try { w = Number((this.state.viewerPanelLp && this.state.viewerPanelLp.width) || 0); } catch (eW0) {} if (!w || w < this.dp(120)) { @@ -916,29 +949,60 @@ FloatBallAppWM.prototype.finishToolAppBackPreview = function(edge, complete) { } if (!w || w < this.dp(120)) w = this.dp(320); 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({ + root.animate().translationX(dir * w).setDuration(180).setInterpolator(decel).withEndAction(new java.lang.Runnable({ run: function() { try { self.resetToolAppBackWindowFollow(); } catch(eResetFollow) {} + try { + if (self.state.toolAppRoot) self.state.toolAppRoot.setTranslationX(0); + if (self.state.toolAppBody) { + self.state.toolAppBody.setTranslationX(0); + self.state.toolAppBody.setAlpha(1); + self.state.toolAppBody.setScaleX(1); + self.state.toolAppBody.setScaleY(1); + } + } catch(eResetView) {} try { self.clearToolAppBackPreview(true); } catch (eClear) {} try { self.popToolAppPage("edge_swipe_back"); } catch (ePop) {} } })).start(); return; } - if (body) { + if (root) { 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({ + root.animate().translationX(0).setDuration(200).setInterpolator(cancelInterp).withEndAction(new java.lang.Runnable({ run: function() { try { self.resetToolAppBackWindowFollow(); } catch(eResetFollow2) {} + try { + if (self.state.toolAppRoot) self.state.toolAppRoot.setTranslationX(0); + if (self.state.toolAppBody) { + self.state.toolAppBody.setTranslationX(0); + self.state.toolAppBody.setAlpha(1); + self.state.toolAppBody.setScaleX(1); + self.state.toolAppBody.setScaleY(1); + } + } catch(eResetView2) {} try { self.clearToolAppBackPreview(true); } catch (eClear2) {} } })).start(); + return; + } + if (body) { + var cancelInterp2 = 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(cancelInterp2).start(); } catch(ePrev3) {} + body.animate().translationX(0).alpha(1).scaleX(1).scaleY(1).setDuration(200).setInterpolator(cancelInterp2).withEndAction(new java.lang.Runnable({ + run: function() { + try { self.resetToolAppBackWindowFollow(); } catch(eResetFollow4) {} + try { self.clearToolAppBackPreview(true); } catch (eClear3) {} + } + })).start(); } else { this.clearToolAppBackPreview(true); } } catch (e) { try { this.resetToolAppBackWindowFollow(); } catch(eResetFollow3) {} + try { if (this.state.toolAppRoot) this.state.toolAppRoot.setTranslationX(0); } catch(eRootCatch) {} + try { if (this.state.toolAppBody) this.state.toolAppBody.setTranslationX(0); } catch(eBodyCatch) {} this.clearToolAppBackPreview(true); safeLog(this.L, 'w', "finish tool app back preview fail: " + String(e)); } diff --git a/manifest.json b/manifest.json index a752e55..209ec20 100644 --- a/manifest.json +++ b/manifest.json @@ -58,8 +58,8 @@ "size": 304993 }, "th_15_extra.js": { - "sha256": "b955573f6715af3da1ffe2302fdc5ebd54967a067f0e8a7503d1eebfbf4e1106", - "size": 109900 + "sha256": "f2742e0ded86437429e21c392e976882e1f7fc35c2fabee73476d5c67c32d5bd", + "size": 112672 }, "th_16_entry.js": { "sha256": "6c59d9891cd010647f84c3db93f1cf95c7bbfb758470ea21044bf72eb8ff73d1", @@ -68,5 +68,5 @@ }, "keyId": "toolhub-targets-2026-rsa3072", "schema": 2, - "version": 20260521222249 + "version": 20260521222946 } diff --git a/manifest.sig b/manifest.sig index 69011e3..d75c114 100644 --- a/manifest.sig +++ b/manifest.sig @@ -1 +1 @@ -PCoh/AnzuyTevPckTCsSIQKxoIla7IzTNtruxi0f4gJghuP/mlrKCH4RzTVf1teHSoYQanG5fWGWIGSh396MerQdCXG/g5VMlZirrOZ6ew3gooxZ3lLg6Y3hBH3oI47KhJF5PX+z/sqeH5AOMZ7d2OrWlYNgGmRvqoyulHK2dSHhHN3OjVxVYI4x72COMhf//6IFxWxL6sp31eS+HEL43+CRGJLxYzuNBlwq6EMO0IX22NBtU2Fs3fheyIiGZVFHnHNyHs4IKXWC5EVLYrD697DnxhkGvRcNOBM0QkcDtLQBahZFpt7qeHxl5pCYyTKubUYXk9noNxR92P9ocvGAD6KARtCoHiWmkp79d0siAKJ+DjzSgIF0Ye5qAGfyMjUb7ZVPPlcYtYZj97/GEYYjxmFeuyVLnxgI7XLOJy5fgQAhiMkwGhoMG4WGK41ym3kQXvQTumnG/i8+9OPfRd58EzbqVHUS4oJgbGLdmTrfV8l2k1NCcGlZP04yNYCailnu +VVMSoSK+a/PGnXpr654GjtvS68rk1MxWEDVULHMDOgIj1BZ1tKTBRTKRmG9hu06csT8QtRZHKtzfHwbGzUhbEC7WOmRelGOvBCCsBS8t10i7sS1Jg8TE7ESrY7p4/8q6uhqTvaE0JjlbuNMX5ImYYi0at91PkqWL3YybUTr7wDRnfGRWeLa054vf7v4gnkkfd+EttFAfQbXkC2EKk6wHVi1NMOVs18j50HdXw1mNrel9kH/LqnbjWj4g1zDnkpRwgOW6IY8qU/mQA6OGUgShbpn71rEFuMo+7O7ZiB4Lmel8i1WBXWORn2mrGRhJC79F6nH8zQzhc8lYWayNRW9YVD/Z4rxSxU/+S+TMzyG+IHz7crwF68F3nBwdnhwMXTCmoSjakOgkNyOoUHoSqRTRBDpiWOXjA4skV6NVpnT91wcakoNBgq2faRX7UgCcqR6fVxtcaX1HuLH8+9riWXbJBpRbk8iNdnwkkGZxndYEQVXfBgnn0DKQgDZSxnx+I4xy