Skip to content

Commit 264fb8b

Browse files
config: add input-field dots_fade_time option (#508)
* config: add input-field dots_fade_time option Time is in milliseconds. Anything <= 0 is immediate. * input-field: change speedPerSecond to fadeMs Default is 200ms, which is the same amount of time as the previous 5 speedPerSecond. Not sure using doubles is necessary, but I'm using them to avoid precision issues. Closes: #355
1 parent eb63207 commit 264fb8b

File tree

3 files changed

+5
-2
lines changed

3 files changed

+5
-2
lines changed

src/config/ConfigManager.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ void CConfigManager::init() {
105105
m_config.addSpecialConfigValue("input-field", "dots_center", Hyprlang::INT{1});
106106
m_config.addSpecialConfigValue("input-field", "dots_spacing", Hyprlang::FLOAT{0.2});
107107
m_config.addSpecialConfigValue("input-field", "dots_rounding", Hyprlang::INT{-1});
108+
m_config.addSpecialConfigValue("input-field", "dots_fade_time", Hyprlang::INT{200});
108109
m_config.addSpecialConfigValue("input-field", "fade_on_empty", Hyprlang::INT{1});
109110
m_config.addSpecialConfigValue("input-field", "fade_timeout", Hyprlang::INT{2000});
110111
m_config.addSpecialConfigValue("input-field", "font_color", Hyprlang::INT{0xFF000000});
@@ -258,6 +259,7 @@ std::vector<CConfigManager::SWidgetConfig> CConfigManager::getWidgetConfigs() {
258259
{"dots_spacing", m_config.getSpecialConfigValue("input-field", "dots_spacing", k.c_str())},
259260
{"dots_center", m_config.getSpecialConfigValue("input-field", "dots_center", k.c_str())},
260261
{"dots_rounding", m_config.getSpecialConfigValue("input-field", "dots_rounding", k.c_str())},
262+
{"dots_fade_time", m_config.getSpecialConfigValue("input-field", "dots_fade_time", k.c_str())},
261263
{"fade_on_empty", m_config.getSpecialConfigValue("input-field", "fade_on_empty", k.c_str())},
262264
{"fade_timeout", m_config.getSpecialConfigValue("input-field", "fade_timeout", k.c_str())},
263265
{"font_color", m_config.getSpecialConfigValue("input-field", "font_color", k.c_str())},

src/renderer/widgets/PasswordInputField.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ CPasswordInputField::CPasswordInputField(const Vector2D& viewport_, const std::u
2222
dots.spacing = std::any_cast<Hyprlang::FLOAT>(props.at("dots_spacing"));
2323
dots.center = std::any_cast<Hyprlang::INT>(props.at("dots_center"));
2424
dots.rounding = std::any_cast<Hyprlang::INT>(props.at("dots_rounding"));
25+
dots.fadeMs = std::any_cast<Hyprlang::INT>(props.at("dots_fade_time"));
2526
fadeOnEmpty = std::any_cast<Hyprlang::INT>(props.at("fade_on_empty"));
2627
fadeTimeoutMs = std::any_cast<Hyprlang::INT>(props.at("fade_timeout"));
2728
hiddenInputState.enabled = std::any_cast<Hyprlang::INT>(props.at("hide_input"));
@@ -138,7 +139,7 @@ void CPasswordInputField::updateDots() {
138139

139140
const auto DELTA = std::clamp((int)std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now() - dots.lastFrame).count(), 0, 20000);
140141

141-
const float TOADD = DELTA / 1000000.0 * dots.speedPerSecond;
142+
const float TOADD = dots.fadeMs > 0 ? ((double)DELTA / 1000000.0) * (1000.0 / (double)dots.fadeMs) : 1;
142143

143144
if (passwordLength > dots.currentAmount) {
144145
dots.currentAmount += TOADD;

src/renderer/widgets/PasswordInputField.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class CPasswordInputField : public IWidget {
4747

4848
struct {
4949
float currentAmount = 0;
50-
float speedPerSecond = 5; // actually per... something. I am unsure xD
50+
int fadeMs = 0;
5151
std::chrono::system_clock::time_point lastFrame;
5252
bool center = false;
5353
float size = 0;

0 commit comments

Comments
 (0)