From 2a97a7a790c4fde704fa493717603b73f903082a Mon Sep 17 00:00:00 2001 From: 7015725 Date: Fri, 22 May 2026 03:57:31 +0800 Subject: [PATCH] fix: make color picker popup responsive --- code/th_14_panels.js | 51 ++++++++++++++++++++++++++++++++++---------- manifest.json | 6 +++--- manifest.sig | 2 +- 3 files changed, 44 insertions(+), 15 deletions(-) diff --git a/code/th_14_panels.js b/code/th_14_panels.js index f11ae12..ed05de3 100644 --- a/code/th_14_panels.js +++ b/code/th_14_panels.js @@ -4754,15 +4754,32 @@ FloatBallAppWM.prototype.showPopupOverlay = function(opts) { var T = PT ? PT.T : this.getAnimalIslandTheme(); var wm = this.state.wm; + var dm = context.getResources().getDisplayMetrics(); + var sw = Number(dm.widthPixels || 0); + var sh = Number(dm.heightPixels || 0); + try { + if (self.getScreenSizePx) { + var ss = self.getScreenSizePx(); + if (ss && ss.w > 0 && ss.h > 0) { sw = ss.w; sh = ss.h; } + } + } catch(eScreenSize) { safeLog(null, 'e', "catch " + String(eScreenSize)); } + if (sw <= 0) sw = self.dp(360); + if (sh <= 0) sh = self.dp(640); + var panelWidth = Math.round(sw * 0.92); + var panelHeight = Math.round(sh * 0.84); + if (panelWidth > self.dp(420)) panelWidth = self.dp(420); + if (panelWidth < self.dp(300)) panelWidth = Math.min(sw - self.dp(16), self.dp(300)); + if (panelHeight > sh - self.dp(48)) panelHeight = sh - self.dp(48); + if (panelHeight < self.dp(420)) panelHeight = Math.min(sh - self.dp(24), self.dp(420)); + var root = new android.widget.FrameLayout(context); root.setBackgroundColor(self.withAlpha(isDark ? 0xFF000000 : 0xFFFFFFFF, isDark ? 0.58 : 0.42)); root.setClickable(true); + try { root.setFocusable(true); root.setFocusableInTouchMode(true); } catch(eRootFocus) {} var card = new android.widget.LinearLayout(context); card.setOrientation(android.widget.LinearLayout.VERTICAL); - var cardLp = new android.widget.FrameLayout.LayoutParams( - self.dp(340), self.dp(520) - ); + var cardLp = new android.widget.FrameLayout.LayoutParams(panelWidth, panelHeight); cardLp.gravity = android.view.Gravity.CENTER; card.setLayoutParams(cardLp); card.setBackground(self.ui.createStrokeDrawable(T.card, self.withAlpha(T.primaryDeep, isDark ? 0.28 : 0.22), self.dp(1), self.dp(24))); @@ -4784,19 +4801,31 @@ FloatBallAppWM.prototype.showPopupOverlay = function(opts) { }); closeBtn.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 18); closeBtn.setTypeface(null, android.graphics.Typeface.BOLD); - try { closeBtn.setBackground(self.ui.createStrokeDrawable(T.primarySoft, self.withAlpha(T.primaryDeep, isDark ? 0.30 : 0.22), self.dp(1), self.dp(18))); } catch(eCloseBg) {} - header.addView(closeBtn, new android.widget.LinearLayout.LayoutParams(self.dp(42), self.dp(38))); + closeBtn.setGravity(android.view.Gravity.CENTER); + closeBtn.setPadding(0, 0, 0, 0); + try { closeBtn.setMinWidth(self.dp(44)); closeBtn.setMinHeight(self.dp(44)); } catch(eCloseMin) {} + try { closeBtn.setBackground(self.ui.createStrokeDrawable(T.primarySoft, self.withAlpha(T.primaryDeep, isDark ? 0.30 : 0.22), self.dp(1), self.dp(22))); } catch(eCloseBg) {} + header.addView(closeBtn, new android.widget.LinearLayout.LayoutParams(self.dp(44), self.dp(44))); card.addView(header); + var scroll = new android.widget.ScrollView(context); + try { scroll.setFillViewport(false); } catch(eFill) {} + try { scroll.setVerticalScrollBarEnabled(false); } catch(eBar) {} + var scrollLp = new android.widget.LinearLayout.LayoutParams( + android.widget.LinearLayout.LayoutParams.MATCH_PARENT, + 0 + ); + scrollLp.weight = 1; + scroll.setLayoutParams(scrollLp); + var content = new android.widget.LinearLayout(context); content.setOrientation(android.widget.LinearLayout.VERTICAL); content.setPadding(0, self.dp(8), 0, 0); - var contentLp = new android.widget.LinearLayout.LayoutParams( - android.widget.LinearLayout.LayoutParams.MATCH_PARENT, - android.widget.LinearLayout.LayoutParams.MATCH_PARENT - ); - content.setLayoutParams(contentLp); - card.addView(content); + scroll.addView(content, new android.widget.ScrollView.LayoutParams( + android.widget.ScrollView.LayoutParams.MATCH_PARENT, + android.widget.ScrollView.LayoutParams.WRAP_CONTENT + )); + card.addView(scroll); root.addView(card); diff --git a/manifest.json b/manifest.json index 79b0561..38a5153 100644 --- a/manifest.json +++ b/manifest.json @@ -54,8 +54,8 @@ "size": 21198 }, "th_14_panels.js": { - "sha256": "e71b13ecaa8c33bf4742b2a9d8201b0d3556b797c693721688f0dc51be5e22c7", - "size": 292862 + "sha256": "73e874db57d5422dbd0e92dc5f78795971547f79899175673e35fb78d492b728", + "size": 294294 }, "th_15_extra.js": { "sha256": "11a9866ba156c2a7862633530eb0d796a9955698a0c3fad4199dcccd4bb27c47", @@ -68,5 +68,5 @@ }, "keyId": "toolhub-targets-2026-rsa3072", "schema": 2, - "version": 20260521194955 + "version": 20260521195721 } diff --git a/manifest.sig b/manifest.sig index 01003d8..4feef45 100644 --- a/manifest.sig +++ b/manifest.sig @@ -1 +1 @@ -NP16btZ+A8rAqr9KVGhL04QXPaDNxjQ3RyBOsoweawP4JpyD81Zt+JpgffpK87PqyaVEfYHRl883F6axGHpYgAVHSl49R0wTLnwaWuFddsIjKZtnThZJD7138glSGIFrYZ3HjiYmshJerfVe434crIQKTeFCd7hPr42MTuhQWtl30MQS4zXaKV7F8S0agJzVJUHR9zQdSBgdjS0luHrSTurIPmq4xy3j/CVzfgtw3103jm+meX+AYvIaANm26GYS0ye2W78zvEzGBwNgMRDQvkg/LcrDRLz2d5O4kVPviAd/2fWvqKet9WCnWx8VrZGcDtNS3ru2Z/aGnVnk2XLz9OFOWofdWOhoTcDrH7Fa8Ox8r9eIBZZIiRJL45ml7PustLP3kOI/hhX0eNXbr32On3+Y2lbHQw4mmA/RFHV7sVHbkaD8iDRYONXxYoF8h2qBVCyTmti5qe36H3gtOCTBgOXa9SpEc8Uj2S79eQvxatQc33LS++0RSNrEoCAcuR3r +e+hl66dbk5PzH1lUwHaxVcG5q1TWOXfeTWqAUrU75ce9P83uC/c1D+peNh/49pYrtCoof9SVcSJvJvBcw7/KFhMRpV/VVDv8gtcfifI2zVzozUdBwR09p6be65umHZqKATVWcS3Qi2jFkrugArvYBLMDH7+Azx8a5xercJ+zFYe0oKl+yssmNz/c3+9f3LQOhdI2DCqZLDeVR0hQ4gPxqTc55LSX5uQV1cWjg04nahGWsy+OY4GswwoZn3kZSkFR4pR8C/jRNgXI1WJGqRa4mVuEejPihkBgs+go5679YZovQeHbFvGhGkIMfMZnzqnSVcrJ7MDoLKTj8xciyAWRRkXPr8pLLddHa4013fVkC8LqnzrUXO6rz66yTfKzNydG26IEX/gXOao3aBTm94l033//bp3S1b3se5NupLjYnsL3on2aIYUHuHokYiHcD0kisMhPLA96FF1hiOl0QrxZunU/K3QRZY8hUUH5KSJzCTvCypWU6fZ/oIdfJoStz2Zv