add eye config values

This commit is contained in:
Felix Salcher 2025-07-11 12:21:23 +02:00
parent 8dccec51e8
commit bec90ccb53
No known key found for this signature in database
3 changed files with 15 additions and 2 deletions

View file

@ -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::SWidgetConfig> 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())},

View file

@ -46,6 +46,10 @@ void CPasswordInputField::configure(const std::unordered_map<std::string, std::a
password.size = std::any_cast<Hyprlang::FLOAT>(props.at("password:size"));
password.center = std::any_cast<Hyprlang::INT>(props.at("password:center"));
password.allowToggle = std::any_cast<Hyprlang::INT>(props.at("password:toggle_password_visibility"));
password.eye.hide = std::any_cast<Hyprlang::INT>(props.at("password:hide_eye"));
password.eye.margin = std::any_cast<Hyprlang::INT>(props.at("password:eye_margin"));
password.eye.size = std::any_cast<Hyprlang::FLOAT>(props.at("password:eye_size"));
password.eye.placement = std::any_cast<Hyprlang::STRING>(props.at("password:eye_placement"));
fadeOnEmpty = std::any_cast<Hyprlang::INT>(props.at("fade_on_empty"));
fadeTimeoutMs = std::any_cast<Hyprlang::INT>(props.at("fade_timeout"));
hiddenInputState.enabled = std::any_cast<Hyprlang::INT>(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};

View file

@ -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;