From 0b1f2a97ef10cfd10669cbfbb3e45d1cab1073a0 Mon Sep 17 00:00:00 2001 From: Maximilian Seidler <78690852+PaideiaDilemma@users.noreply.github.com> Date: Wed, 2 Apr 2025 22:15:59 +0200 Subject: [PATCH] input-field: decouple outer color and base for hidden input random colors (#727) --- assets/example.conf | 2 +- src/config/ConfigManager.cpp | 2 ++ src/renderer/widgets/PasswordInputField.cpp | 3 ++- src/renderer/widgets/PasswordInputField.hpp | 2 ++ 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/assets/example.conf b/assets/example.conf index ee9a575..f815bfc 100644 --- a/assets/example.conf +++ b/assets/example.conf @@ -89,4 +89,4 @@ label { position = -30, -150 halign = right valign = top -} \ No newline at end of file +} diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index 27c5e3f..5995f5e 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -294,6 +294,7 @@ void CConfigManager::init() { m_config.addSpecialConfigValue("input-field", "position", LAYOUTCONFIG("0,0")); m_config.addSpecialConfigValue("input-field", "placeholder_text", Hyprlang::STRING{"Input Password"}); m_config.addSpecialConfigValue("input-field", "hide_input", Hyprlang::INT{0}); + m_config.addSpecialConfigValue("input-field", "hide_input_base_color", Hyprlang::INT{0xEE00FF99}); m_config.addSpecialConfigValue("input-field", "rounding", Hyprlang::INT{-1}); m_config.addSpecialConfigValue("input-field", "check_color", GRADIENTCONFIG("0xFF22CC88")); m_config.addSpecialConfigValue("input-field", "fail_color", GRADIENTCONFIG("0xFFCC2222")); @@ -469,6 +470,7 @@ std::vector CConfigManager::getWidgetConfigs() { {"position", m_config.getSpecialConfigValue("input-field", "position", k.c_str())}, {"placeholder_text", m_config.getSpecialConfigValue("input-field", "placeholder_text", k.c_str())}, {"hide_input", m_config.getSpecialConfigValue("input-field", "hide_input", k.c_str())}, + {"hide_input_base_color", m_config.getSpecialConfigValue("input-field", "hide_input_base_color", k.c_str())}, {"rounding", m_config.getSpecialConfigValue("input-field", "rounding", k.c_str())}, {"check_color", m_config.getSpecialConfigValue("input-field", "check_color", k.c_str())}, {"fail_color", m_config.getSpecialConfigValue("input-field", "fail_color", k.c_str())}, diff --git a/src/renderer/widgets/PasswordInputField.cpp b/src/renderer/widgets/PasswordInputField.cpp index f7a9b5b..b27a0ee 100644 --- a/src/renderer/widgets/PasswordInputField.cpp +++ b/src/renderer/widgets/PasswordInputField.cpp @@ -59,6 +59,7 @@ void CPasswordInputField::configure(const std::unordered_map(props.at("invert_numlock")); colorConfig.swapFont = std::any_cast(props.at("swap_font_color")); + colorConfig.hiddenBase = std::any_cast(props.at("hide_input_base_color")); } catch (const std::bad_any_cast& e) { RASSERT(false, "Failed to construct CPasswordInputField: {}", e.what()); // } catch (const std::out_of_range& e) { @@ -411,7 +412,7 @@ void CPasswordInputField::updateHiddenInputState() { // randomize new thang hiddenInputState.lastPasswordLength = passwordLength; - const auto BASEOK = colorConfig.outer->m_vColors.front().asOkLab(); + const auto BASEOK = colorConfig.hiddenBase.asOkLab(); // convert to polar coordinates const auto OKICHCHROMA = std::sqrt(std::pow(BASEOK.a, 2) + std::pow(BASEOK.b, 2)); diff --git a/src/renderer/widgets/PasswordInputField.hpp b/src/renderer/widgets/PasswordInputField.hpp index 86ff7e2..179680d 100644 --- a/src/renderer/widgets/PasswordInputField.hpp +++ b/src/renderer/widgets/PasswordInputField.hpp @@ -101,6 +101,8 @@ class CPasswordInputField : public IWidget { CGradientValueData* num = nullptr; CGradientValueData* both = nullptr; + CHyprColor hiddenBase; + int transitionMs = 0; bool invertNum = false; bool swapFont = false;