diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index 20c0f0e..c85784b 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -289,6 +289,10 @@ void CConfigManager::init() { m_config.addSpecialConfigValue("input-field", "password:size", Hyprlang::FLOAT{0.25}); m_config.addSpecialConfigValue("input-field", "password:center", Hyprlang::INT{1}); m_config.addSpecialConfigValue("input-field", "password:toggle_password_visibility", Hyprlang::INT{0}); + m_config.addSpecialConfigValue("input-field", "password:hide_eye", Hyprlang::INT{0}); + m_config.addSpecialConfigValue("input-field", "password:eye_margin", Hyprlang::INT{8}); + m_config.addSpecialConfigValue("input-field", "password:eye_size", Hyprlang::FLOAT{0.25}); + m_config.addSpecialConfigValue("input-field", "password:eye_placement", Hyprlang::STRING{"right"}); m_config.addSpecialConfigValue("input-field", "fade_on_empty", Hyprlang::INT{1}); m_config.addSpecialConfigValue("input-field", "fade_timeout", Hyprlang::INT{2000}); m_config.addSpecialConfigValue("input-field", "font_color", Hyprlang::INT{0xFF000000}); @@ -472,6 +476,10 @@ std::vector CConfigManager::getWidgetConfigs() { {"password:size", m_config.getSpecialConfigValue("input-field", "password:size", k.c_str())}, {"password:center", m_config.getSpecialConfigValue("input-field", "password:center", k.c_str())}, {"password:toggle_password_visibility", m_config.getSpecialConfigValue("input-field", "password:toggle_password_visibility", k.c_str())}, + {"password:hide_eye", m_config.getSpecialConfigValue("input-field", "password:hide_eye", k.c_str())}, + {"password:eye_margin", m_config.getSpecialConfigValue("input-field", "password:eye_margin", k.c_str())}, + {"password:eye_size", m_config.getSpecialConfigValue("input-field", "password:eye_size", k.c_str())}, + {"password:eye_placement", m_config.getSpecialConfigValue("input-field", "password:eye_placement", k.c_str())}, {"fade_on_empty", m_config.getSpecialConfigValue("input-field", "fade_on_empty", k.c_str())}, {"fade_timeout", m_config.getSpecialConfigValue("input-field", "fade_timeout", k.c_str())}, {"font_color", m_config.getSpecialConfigValue("input-field", "font_color", k.c_str())}, diff --git a/src/renderer/widgets/PasswordInputField.cpp b/src/renderer/widgets/PasswordInputField.cpp index db89fbc..547f2f5 100644 --- a/src/renderer/widgets/PasswordInputField.cpp +++ b/src/renderer/widgets/PasswordInputField.cpp @@ -46,6 +46,10 @@ void CPasswordInputField::configure(const std::unordered_map(props.at("password:size")); password.center = std::any_cast(props.at("password:center")); password.allowToggle = std::any_cast(props.at("password:toggle_password_visibility")); + password.eye.hide = std::any_cast(props.at("password:hide_eye")); + password.eye.margin = std::any_cast(props.at("password:eye_margin")); + password.eye.size = std::any_cast(props.at("password:eye_size")); + password.eye.placement = std::any_cast(props.at("password:eye_placement")); fadeOnEmpty = std::any_cast(props.at("fade_on_empty")); fadeTimeoutMs = std::any_cast(props.at("fade_timeout")); hiddenInputState.enabled = std::any_cast(props.at("hide_input")); @@ -353,7 +357,7 @@ bool CPasswordInputField::draw(const SRenderData& data) { auto eyeAsset = showPassword ? password.eye.closedAsset : password.eye.openAsset; double eyeHeight = (int)(std::nearbyint(configSize.y * password.eye.size * 0.5f) * 2.f); auto eyeSize = Vector2D{eyeHeight, eyeHeight}; - if (password.allowToggle) { + if (password.allowToggle && !password.eye.hide) { eyeOffset = eyeSize.x + password.eye.margin; } @@ -447,7 +451,7 @@ bool CPasswordInputField::draw(const SRenderData& data) { } } - if (passwordLength != 0 && password.allowToggle) { + if (passwordLength != 0 && password.allowToggle && !password.eye.hide) { auto padding = (inputFieldBox.h - eyeSize.y) / 2.0; auto eyePosition = inputFieldBox.pos() + (password.eye.placement == "right" ? Vector2D{inputFieldBox.w - eyeSize.x - padding, padding} : Vector2D{padding, padding}); CBox box = {eyePosition, eyeSize}; diff --git a/src/renderer/widgets/PasswordInputField.hpp b/src/renderer/widgets/PasswordInputField.hpp index 6555f74..86cf86d 100644 --- a/src/renderer/widgets/PasswordInputField.hpp +++ b/src/renderer/widgets/PasswordInputField.hpp @@ -90,6 +90,7 @@ class CPasswordInputField : public IWidget { int margin = 8; double size = 0.25; std::string placement = "right"; + bool hide = false; std::string openRescourceID = ""; SPreloadedAsset* openAsset = nullptr;