feat(settings): adjustable opacity for the favorite gold outline + star
Adds a "Favorite Highlight Opacity" slider (15-100%, default 100%) to Settings > Appearance > Scale & Effects. It scales the alpha of the four favorite gold tokens (fill/border/icon/outline) at their resolve site in the Balance address list via material::ScaleAlpha, so the gold row outline and the star button fade together. The multiplier is skin-agnostic (it scales whatever alpha the theme resolved) and touches only favorited rows; non-favorite rows and the white selection highlight are unchanged, and the 100% default is byte-identical to the previous look. The preference lives in Settings (favorite_opacity, clamped 0.15-1.0 in both the setter and on load), persists across restarts, updates live, and is not low-spec gated (it's a pure color-alpha preference, independent of the transparency sliders). New i18n keys favorite_opacity / tt_favorite_opacity are translated into all eight locales; the CJK subset font is rebuilt to add the two new glyphs the zh string needs. Verified: full + lite builds clean, full + lite test suites pass, hygiene OK. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -204,6 +204,8 @@ bool Settings::load(const std::string& path)
|
||||
ui_opacity_ = 1.0f; // legacy: reduced = fully opaque
|
||||
}
|
||||
loadScalar(j, "window_opacity", window_opacity_);
|
||||
loadScalar(j, "favorite_opacity", favorite_opacity_);
|
||||
favorite_opacity_ = std::clamp(favorite_opacity_, 0.15f, 1.0f); // matches setFavoriteOpacity()
|
||||
if (j.contains("balance_layout")) {
|
||||
if (j["balance_layout"].is_string())
|
||||
balance_layout_ = j["balance_layout"].get<std::string>();
|
||||
@@ -542,6 +544,7 @@ bool Settings::save(const std::string& path)
|
||||
j["gradient_background"] = gradient_background_;
|
||||
j["ui_opacity"] = ui_opacity_;
|
||||
j["window_opacity"] = window_opacity_;
|
||||
j["favorite_opacity"] = favorite_opacity_;
|
||||
j["balance_layout"] = balance_layout_; // saved as string ID
|
||||
j["portfolio_style"] = portfolio_style_;
|
||||
j["contacts_view_mode"] = contacts_view_mode_;
|
||||
|
||||
@@ -261,6 +261,11 @@ public:
|
||||
float getNoiseOpacity() const { return noise_opacity_; }
|
||||
void setNoiseOpacity(float v) { noise_opacity_ = v; }
|
||||
|
||||
// Opacity multiplier for the favorite gold visuals (row outline + star button) in the
|
||||
// Balance address list. 1.0 = theme default (unchanged); floor 0.15 so it can't vanish.
|
||||
float getFavoriteOpacity() const { return favorite_opacity_; }
|
||||
void setFavoriteOpacity(float v) { favorite_opacity_ = std::max(0.15f, std::min(1.0f, v)); }
|
||||
|
||||
// Gradient background mode (use gradient variant of theme background)
|
||||
bool getGradientBackground() const { return gradient_background_; }
|
||||
void setGradientBackground(bool v) { gradient_background_ = v; }
|
||||
@@ -685,6 +690,7 @@ private:
|
||||
int acrylic_quality_ = 2;
|
||||
float blur_multiplier_ = 0.10f;
|
||||
float noise_opacity_ = 0.5f;
|
||||
float favorite_opacity_ = 1.0f; // Favorite gold outline/star opacity multiplier (0.15–1.0, 1.0 = theme default)
|
||||
bool gradient_background_ = false;
|
||||
#ifdef _WIN32
|
||||
float ui_opacity_ = 0.50f; // Card/sidebar opacity (0.3–1.0, 1.0 = opaque)
|
||||
|
||||
Reference in New Issue
Block a user