From 855352bfd9a3d19de0330c6061ea344ef2541e8d Mon Sep 17 00:00:00 2001 From: Hermes Date: Fri, 22 May 2026 06:41:54 +0800 Subject: [PATCH] Fix ToolApp edge back preview layers --- code/th_15_extra.js | 50 +++++++++++++++------------------------------ manifest.json | 6 +++--- manifest.sig | 2 +- 3 files changed, 21 insertions(+), 37 deletions(-) diff --git a/code/th_15_extra.js b/code/th_15_extra.js index f3c97eb..48e9e19 100644 --- a/code/th_15_extra.js +++ b/code/th_15_extra.js @@ -857,11 +857,8 @@ 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) {} + /* 不再移动 WindowManager 窗口,避免 prevBody 和当前页面一起跑。 */ + /* try { this.applyToolAppBackWindowFollow(edge, dragPx); } catch(eFollow) {} */ try { var nowLog = Date.now(); @@ -877,28 +874,24 @@ FloatBallAppWM.prototype.applyToolAppBackPreviewProgress = function(edge, progre } catch(eLog) {} var root = this.state.toolAppRoot; - var rootMove = dir * w * eased * 0.42; + 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; - rootMove = dir * Math.min(rawDrag, Math.floor(w * 0.45)); + bodyMove = dir * Math.min(rawDrag, Math.floor(w * 0.45)); } - } catch(eRootMove) {} + } catch(eBodyMove) {} - 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 (root) { + try { root.animate().cancel(); } catch(eCancelRoot) {} + try { root.setTranslationX(0); } catch(eRootReset) {} } if (body) { try { body.animate().cancel(); } catch(eCancelBody) {} - body.setTranslationX(0); + body.setTranslationX(bodyMove); body.setAlpha(1.0 - 0.10 * eased); var s = 1.0 - 0.015 * eased; body.setScaleX(s); @@ -908,14 +901,16 @@ FloatBallAppWM.prototype.applyToolAppBackPreviewProgress = function(edge, progre try { var rootTx = root ? root.getTranslationX() : 0; var bodyTx = body ? body.getTranslationX() : 0; + var prevTx = prev ? prev.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) + + ' bodyMove=' + String(bodyMove) + ' rootTx=' + String(rootTx) + ' bodyTx=' + String(bodyTx) + + ' prevTx=' + String(prevTx) + ' lpX=' + String(lpX) ); this.state._lastBackMoveLog = nowLog2; @@ -941,7 +936,7 @@ FloatBallAppWM.prototype.finishToolAppBackPreview = function(edge, complete) { var prev = this.state.toolAppBackPreviewView; var dir = Number(edge) === 1 ? -1 : 1; var decel = new android.view.animation.DecelerateInterpolator(); - if (complete && root) { + if (complete && body) { var w = 0; try { w = Number((this.state.viewerPanelLp && this.state.viewerPanelLp.width) || 0); } catch (eW0) {} if (!w || w < this.dp(120)) { @@ -949,7 +944,7 @@ 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) {} - root.animate().translationX(dir * w).setDuration(180).setInterpolator(decel).withEndAction(new java.lang.Runnable({ + 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 { @@ -967,10 +962,10 @@ FloatBallAppWM.prototype.finishToolAppBackPreview = function(edge, complete) { })).start(); return; } - if (root) { + if (body) { 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) {} - root.animate().translationX(0).setDuration(200).setInterpolator(cancelInterp).withEndAction(new java.lang.Runnable({ + body.animate().translationX(0).alpha(1).scaleX(1).scaleY(1).setDuration(200).setInterpolator(cancelInterp).withEndAction(new java.lang.Runnable({ run: function() { try { self.resetToolAppBackWindowFollow(); } catch(eResetFollow2) {} try { @@ -987,18 +982,7 @@ FloatBallAppWM.prototype.finishToolAppBackPreview = function(edge, complete) { })).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); - } + this.clearToolAppBackPreview(true); } catch (e) { try { this.resetToolAppBackWindowFollow(); } catch(eResetFollow3) {} try { if (this.state.toolAppRoot) this.state.toolAppRoot.setTranslationX(0); } catch(eRootCatch) {} diff --git a/manifest.json b/manifest.json index 209ec20..bd66107 100644 --- a/manifest.json +++ b/manifest.json @@ -58,8 +58,8 @@ "size": 304993 }, "th_15_extra.js": { - "sha256": "f2742e0ded86437429e21c392e976882e1f7fc35c2fabee73476d5c67c32d5bd", - "size": 112672 + "sha256": "5fcd5a8146c6bc68e8adc6660c9b12d1f918d7a5a83e00d745a7e18e34ad6f39", + "size": 112080 }, "th_16_entry.js": { "sha256": "6c59d9891cd010647f84c3db93f1cf95c7bbfb758470ea21044bf72eb8ff73d1", @@ -68,5 +68,5 @@ }, "keyId": "toolhub-targets-2026-rsa3072", "schema": 2, - "version": 20260521222946 + "version": 20260521224041 } diff --git a/manifest.sig b/manifest.sig index d75c114..9001bba 100644 --- a/manifest.sig +++ b/manifest.sig @@ -1 +1 @@ -VVMSoSK+a/PGnXpr654GjtvS68rk1MxWEDVULHMDOgIj1BZ1tKTBRTKRmG9hu06csT8QtRZHKtzfHwbGzUhbEC7WOmRelGOvBCCsBS8t10i7sS1Jg8TE7ESrY7p4/8q6uhqTvaE0JjlbuNMX5ImYYi0at91PkqWL3YybUTr7wDRnfGRWeLa054vf7v4gnkkfd+EttFAfQbXkC2EKk6wHVi1NMOVs18j50HdXw1mNrel9kH/LqnbjWj4g1zDnkpRwgOW6IY8qU/mQA6OGUgShbpn71rEFuMo+7O7ZiB4Lmel8i1WBXWORn2mrGRhJC79F6nH8zQzhc8lYWayNRW9YVD/Z4rxSxU/+S+TMzyG+IHz7crwF68F3nBwdnhwMXTCmoSjakOgkNyOoUHoSqRTRBDpiWOXjA4skV6NVpnT91wcakoNBgq2faRX7UgCcqR6fVxtcaX1HuLH8+9riWXbJBpRbk8iNdnwkkGZxndYEQVXfBgnn0DKQgDZSxnx+I4xy +OcvlczPduvM0/xKzxRszzLAAOoXdCJ5vj0tf38jAHCYmPA+w0E2JSHIR3uSdr7tBNS42SeBnoHctm9PL00HyaytJvS/N+QIUo8oe6UWK5kVxx5xfeMqmwScGHV6tt93BVc03SwAKepaQZE0dBOFpsEGADwuoVHUEuwsFgRlc6Wl3UuGhcDVrALXgYlZBLy51fs8DmBHxK5CM26Oi2pLC/mI2VpwqMkx64VmsJtgbtVwQdFmwM2Y7tRUf9bGFkPld2gSvWyAAEk/Zul/6z61DHwCSmk0HIuIUb/yFBRxDtBhgQx50jUtKu6JEHhEMFe/eLkb/lfwXPmNIuoHIF89/t8Rf7k7cd5ZrolqeVR0uYcXlmJ3i8nadasnJn1NJh6YobbnmLOoC1NQm5mw2l8e0Q0B+5HEG2NyfxVHxgh1dIvGll2MroJqzpNMTeUW7adE3UBc/wgTO8s6MBAhs+lNLFikgtMvCEDczwymPOn2wBuRxrUY+Ni1UJveGcbNhmUUH