fix(th_14_panels): 改为独立维护 ShortX 图标颜色状态

This commit is contained in:
Hermes
2026-04-20 21:36:15 +08:00
parent 3c8c337401
commit f89ed88033

View File

@@ -931,7 +931,7 @@ FloatBallAppWM.prototype.buildButtonEditorPanelView = function() {
var btnColorShortX = self.ui.createFlatButton(self, "\u989c\u8272", C.primary, function() { var btnColorShortX = self.ui.createFlatButton(self, "\u989c\u8272", C.primary, function() {
self.touchActivity(); self.touchActivity();
var currentTint = (inputShortXIconTint && inputShortXIconTint.input) ? String(inputShortXIconTint.input.getText() || "") : ""; var currentTint = currentShortXIconTint || "";
self.showColorPickerPopup({ self.showColorPickerPopup({
currentColor: currentTint, currentColor: currentTint,
currentIconName: currentShortXIconName, currentIconName: currentShortXIconName,
@@ -1104,8 +1104,7 @@ FloatBallAppWM.prototype.buildButtonEditorPanelView = function() {
shortxPickerState.previewNameTv.setText(normalizedShort ? ("\u5df2\u9009: " + normalizedShort) : "\u672a\u9009\u62e9\u56fe\u6807"); shortxPickerState.previewNameTv.setText(normalizedShort ? ("\u5df2\u9009: " + normalizedShort) : "\u672a\u9009\u62e9\u56fe\u6807");
} }
if (shortxPickerState.previewIv) { if (shortxPickerState.previewIv) {
var tintHex = ""; var tintHex = currentShortXIconTint || "";
try { tintHex = String(inputShortXIconTint.getValue() || ""); } catch(eTint) {}
var drPreview = normalizedShort ? self.resolveShortXDrawable(normalizedShort, tintHex) : null; var drPreview = normalizedShort ? self.resolveShortXDrawable(normalizedShort, tintHex) : null;
if (drPreview) { if (drPreview) {
shortxPickerState.previewIv.setImageDrawable(drPreview); shortxPickerState.previewIv.setImageDrawable(drPreview);
@@ -1168,7 +1167,7 @@ FloatBallAppWM.prototype.buildButtonEditorPanelView = function() {
try { shortxPickerState.prevBtn.setEnabled(shortxPickerState.currentPage > 0); } catch(ePrev) {} try { shortxPickerState.prevBtn.setEnabled(shortxPickerState.currentPage > 0); } catch(ePrev) {}
try { shortxPickerState.nextBtn.setEnabled(shortxPickerState.currentPage < totalPages - 1); } catch(eNext) {} try { shortxPickerState.nextBtn.setEnabled(shortxPickerState.currentPage < totalPages - 1); } catch(eNext) {}
applyShortXTabStyles(); applyShortXTabStyles();
var tintHex = String(inputShortXIconTint.getValue() || ""); var tintHex = currentShortXIconTint || "";
var selectedShort = currentShortXIconName ? self.normalizeShortXIconName(currentShortXIconName, false) : ""; var selectedShort = currentShortXIconName ? self.normalizeShortXIconName(currentShortXIconName, false) : "";
for (i = 0; i < result.length; i++) { for (i = 0; i < result.length; i++) {
(function(entry) { (function(entry) {
@@ -1250,6 +1249,7 @@ FloatBallAppWM.prototype.buildButtonEditorPanelView = function() {
// # ShortX 图标颜色(留空跟随主题) // # ShortX 图标颜色(留空跟随主题)
var defaultTint = targetBtn.iconTint ? String(targetBtn.iconTint) : ""; var defaultTint = targetBtn.iconTint ? String(targetBtn.iconTint) : "";
var currentShortXIconTint = defaultTint;
var inputShortXIconTint = self.ui.createInputGroup(self, "图标颜色 (留空跟随主题)", defaultTint, false, "支持 #RRGGBB / #AARRGGBB下方可展开完整调色板"); var inputShortXIconTint = self.ui.createInputGroup(self, "图标颜色 (留空跟随主题)", defaultTint, false, "支持 #RRGGBB / #AARRGGBB下方可展开完整调色板");
form.addView(inputShortXIconTint.view); form.addView(inputShortXIconTint.view);
// # 避免 Rhino 闭包问题:将输入框引用存储到 self.state供颜色选择器回调使用 // # 避免 Rhino 闭包问题:将输入框引用存储到 self.state供颜色选择器回调使用
@@ -1343,12 +1343,14 @@ FloatBallAppWM.prototype.buildButtonEditorPanelView = function() {
try { raw = String(inputShortXIconTint.getValue() || "").replace(/^\s+|\s+$/g, ""); } catch(eTintRaw0) {} try { raw = String(inputShortXIconTint.getValue() || "").replace(/^\s+|\s+$/g, ""); } catch(eTintRaw0) {}
var normalized = normalizeTintColorValue(raw, true); var normalized = normalizeTintColorValue(raw, true);
if (raw && !normalized) { if (raw && !normalized) {
currentShortXIconTint = raw;
updateTintAlphaLabel(0); updateTintAlphaLabel(0);
updateTintPalettePreviewText("", false, raw); updateTintPalettePreviewText("", false, raw);
updateShortXIconPreview(); updateShortXIconPreview();
if (shortxPickerState.expanded) renderShortXIconGrid(); if (shortxPickerState.expanded) renderShortXIconGrid();
return; return;
} }
currentShortXIconTint = normalized || "";
var effectiveHex = normalized || getThemeTintHex(); var effectiveHex = normalized || getThemeTintHex();
var alphaByte = extractTintAlphaByte(effectiveHex); var alphaByte = extractTintAlphaByte(effectiveHex);
tintPaletteState.currentBaseRgbHex = extractTintRgbHex(effectiveHex); tintPaletteState.currentBaseRgbHex = extractTintRgbHex(effectiveHex);
@@ -1367,9 +1369,10 @@ FloatBallAppWM.prototype.buildButtonEditorPanelView = function() {
} }
function applyTintHexValue(hexValue, pushRecent) { function applyTintHexValue(hexValue, pushRecent) {
currentShortXIconTint = String(hexValue || "");
try { try {
tintPaletteState.syncing = true; tintPaletteState.syncing = true;
inputShortXIconTint.input.setText(String(hexValue || "")); inputShortXIconTint.input.setText(currentShortXIconTint);
} catch(eSetTint0) {} } catch(eSetTint0) {}
tintPaletteState.syncing = false; tintPaletteState.syncing = false;
syncTintUiFromInput(!!pushRecent); syncTintUiFromInput(!!pushRecent);
@@ -1502,7 +1505,7 @@ FloatBallAppWM.prototype.buildButtonEditorPanelView = function() {
var tintToggleBtn = self.ui.createFlatButton(self, "\u9009\u62e9\u989c\u8272", C.primary, function() { var tintToggleBtn = self.ui.createFlatButton(self, "\u9009\u62e9\u989c\u8272", C.primary, function() {
self.touchActivity(); self.touchActivity();
var currentTint = (inputShortXIconTint && inputShortXIconTint.input) ? String(inputShortXIconTint.input.getText() || "") : ""; var currentTint = currentShortXIconTint || "";
self.showColorPickerPopup({ self.showColorPickerPopup({
currentColor: currentTint, currentColor: currentTint,
currentIconName: currentShortXIconName, currentIconName: currentShortXIconName,
@@ -3320,7 +3323,7 @@ shortcutWrap.addView(scBody);
var sxIcon = self.normalizeShortXIconName(currentShortXIconName, false); var sxIcon = self.normalizeShortXIconName(currentShortXIconName, false);
if (sxIcon) newBtn.iconResName = sxIcon; else delete newBtn.iconResName; if (sxIcon) newBtn.iconResName = sxIcon; else delete newBtn.iconResName;
// # 保存 ShortX 图标颜色:优先使用 targetBtn.iconTint颜色选择器已更新回退到输入框 // # 保存 ShortX 图标颜色:优先使用 targetBtn.iconTint颜色选择器已更新回退到输入框
var sxTint = targetBtn.iconTint || ""; var sxTint = currentShortXIconTint || targetBtn.iconTint || "";
if (!sxTint) { if (!sxTint) {
try { sxTint = inputShortXIconTint.getValue(); } catch(eGetTint) {} try { sxTint = inputShortXIconTint.getValue(); } catch(eGetTint) {}
} }