fix: isolate UI button click guards

This commit is contained in:
7015725
2026-05-22 05:06:49 +08:00
parent eaeeba2b0a
commit 544494df8c
3 changed files with 16 additions and 6 deletions

View File

@@ -210,7 +210,12 @@ FloatBallAppWM.prototype.ui = {
var rippleColor = app.withAlpha ? app.withAlpha(txtColor, 0.1) : 0x22888888; var rippleColor = app.withAlpha ? app.withAlpha(txtColor, 0.1) : 0x22888888;
btn.setBackground(this.createTransparentRippleDrawable(rippleColor, app.dp(8))); btn.setBackground(this.createTransparentRippleDrawable(rippleColor, app.dp(8)));
btn.setOnClickListener(new android.view.View.OnClickListener({ btn.setOnClickListener(new android.view.View.OnClickListener({
onClick: function(v) { app.touchActivity(); app.guardClick("ui_btn", INTERACTION_CONSTANTS.CLICK_COOLDOWN_MS, function(){ if(onClick) onClick(v); }); } onClick: function(v) {
app.touchActivity();
var guardKey = "ui_btn";
try { guardKey = "ui_btn_" + String(java.lang.System.identityHashCode(v || btn)); } catch(eKey) {}
app.guardClick(guardKey, INTERACTION_CONSTANTS.CLICK_COOLDOWN_MS, function(){ if(onClick) onClick(v); });
}
})); }));
return btn; return btn;
}, },
@@ -228,7 +233,12 @@ FloatBallAppWM.prototype.ui = {
btn.setBackground(this.createRippleDrawable(bgColor, pressedColor, app.dp(24))); btn.setBackground(this.createRippleDrawable(bgColor, pressedColor, app.dp(24)));
try { btn.setElevation(app.dp(2)); } catch(e) { safeLog(null, 'e', "catch " + String(e)); } try { btn.setElevation(app.dp(2)); } catch(e) { safeLog(null, 'e', "catch " + String(e)); }
btn.setOnClickListener(new android.view.View.OnClickListener({ btn.setOnClickListener(new android.view.View.OnClickListener({
onClick: function(v) { app.touchActivity(); app.guardClick("ui_btn", INTERACTION_CONSTANTS.CLICK_COOLDOWN_MS, function(){ if(onClick) onClick(v); }); } onClick: function(v) {
app.touchActivity();
var guardKey = "ui_btn";
try { guardKey = "ui_btn_" + String(java.lang.System.identityHashCode(v || btn)); } catch(eKey) {}
app.guardClick(guardKey, INTERACTION_CONSTANTS.CLICK_COOLDOWN_MS, function(){ if(onClick) onClick(v); });
}
})); }));
return btn; return btn;
}, },

View File

@@ -14,8 +14,8 @@
"size": 5598 "size": 5598
}, },
"th_04_theme.js": { "th_04_theme.js": {
"sha256": "dbfce3c493438843dc7285765f61007b24df5db972b8877a81c4b86ae7b9f7ec", "sha256": "16a7121c734fccae17b9f8a23c1f0758d3a765541d1de4d6159747fc92bc26a4",
"size": 42168 "size": 42568
}, },
"th_05_persistence.js": { "th_05_persistence.js": {
"sha256": "8cc52d3dacc8ac3c1b5aecf6fc399a2fe516402955799eddbd07dc9195c10d40", "sha256": "8cc52d3dacc8ac3c1b5aecf6fc399a2fe516402955799eddbd07dc9195c10d40",
@@ -68,5 +68,5 @@
}, },
"keyId": "toolhub-targets-2026-rsa3072", "keyId": "toolhub-targets-2026-rsa3072",
"schema": 2, "schema": 2,
"version": 20260521205945 "version": 20260521210640
} }

View File

@@ -1 +1 @@
NgnUXqGR4ldz62G8+pQBYI2C+RXgU06Tuy9BlhXswjiyDCcRUgON/nMLk4Vo99qeDHgrvyG/sqeE2RAUBAFWmBJbEF0t1Wbo/rBV43CviYaHthC7P/5mt17oA7Z2jU5L67wT9l4CvZ5qQ0a0R/7dUinAjUt2WLV23ZAZOp+RuEXP29x6VSuh+HmGa01sP4Rg/kZn2HL+mv5nQ67ZcIZBjEoxPYIbXlnUnlVGzaN8CqtBgkB5AE+IODjkBfA3Mrkn/n6nzUOnmpYNBCLEsQuQ/P3yhTiX4NqYvD2PFxViJWsivzDKvQcWbOxqRd3QGk8GwVt8/FOZnj29sUTUz9s+qIFz0MdWSyMXAH0NVtOyxNcz+pjIWtCdj7lhbgcOTJtz1Keqvv6fbBbpe92Q+e5+egusOTUzjWZIStnqygPSjvsV/jOxt7gFhBthujoLgZ2VfQdP/yXZ2uMLen1RO4kPwfgO37NYXYFodMgbqlopR8KJziMN5fM5/k+C4BaX+KPU X1m1Kq0cC137nSen7CwXEodW4fD29TnwczflnH6hXlmwSfOw8+GaNx/kOqfUWxOwxJF7AlzBBOh8bxpc8iVq2SuPfm4qIz4SwW38YSGzTu0gFBNjO9DH1woN33rt3RhIEN2uYQCIef8W8JbtZkcgjS9sOnC42thixgdzmxZkaZPVnw3siIL9bdKyzKNTiro++A4ZRjf3rSuv4cGJ38kBqOu0w0D/dR7S+/iiSqGL710cEJtWXnfgzFcLzewOACUc7XfWT9k3dJraqc/OuvgIQUIuToIaPzIccxBoSppW7OlYXpc4EdR2vspMjlIjyMsaOMn2B3LxCK+BLqp6l0iCQ8HNkHIKlTzk9Fgzz86USf0DwrW7/SNNYNUkyepHnk13O6Dx9CE3j96Qb4V8nKK4HGvMUAg2MRx5yEvbqmgN2P6ogi55OfAlR2kXdhCeMkrpB0wPKg5AtJ0l/d7uJzKgys1vAaXACN6NzSJVSOyVq16qBgk5yH2sD6M/AQ8ykZdn