Fixed uint8_t text fields

This commit is contained in:
Yousef Khadadeh 2026-04-03 14:33:44 +03:00
parent 97d308268d
commit df3a78be1f
2 changed files with 5 additions and 4 deletions

View file

@ -61,7 +61,7 @@ void input_text_field(GUIManager& gui, const char* id, std::string_view name, st
});
}
void input_scalar(GUIManager& gui, const char* id, uint8_t* val, uint8_t minVal, uint8_t maxVal, const TextBoxScalarOptions& options) {
template <> void input_scalar<uint8_t>(GUIManager& gui, const char* id, uint8_t* val, uint8_t minVal, uint8_t maxVal, const TextBoxScalarOptions& options) {
InputManager::TextInputProperties textInputProps {
.inputType = SDL_TextInputType::SDL_TEXTINPUT_TYPE_NUMBER,
.capitalization = SDL_Capitalization::SDL_CAPITALIZE_NONE,
@ -76,13 +76,13 @@ void input_scalar(GUIManager& gui, const char* id, uint8_t* val, uint8_t minVal,
d.fromStr = [minVal, maxVal](const std::string& a) {
if(a.empty())
return minVal;
uint8_t toRet;
uint32_t toRet;
std::stringstream ss;
ss << a;
ss >> toRet;
if(ss.fail())
return minVal;
return std::clamp(toRet, minVal, maxVal);
return static_cast<uint8_t>(std::clamp(toRet, static_cast<uint32_t>(minVal), static_cast<uint32_t>(maxVal)));
};
d.toStr = [options](const uint8_t& a) {
return std::to_string(static_cast<uint32_t>(a));

View file

@ -49,7 +49,6 @@ struct TextBoxHexColorOptions {
void input_color_component_255(GUIManager& gui, const char* id, float* val, const TextBoxOptions& options = {});
void input_text(GUIManager& gui, const char* id, std::string* val, const TextBoxOptions& options = {});
void input_text_field(GUIManager& gui, const char* id, std::string_view name, std::string* val, const TextBoxOptions& options = {});
void input_scalar(GUIManager& gui, const char* id, uint8_t* val, uint8_t minVal, uint8_t maxVal, const TextBoxScalarOptions& options = {});
void input_path(GUIManager& gui, const char* id, std::filesystem::path* val, const TextBoxPathOptions& options = {});
void input_path_field(GUIManager& gui, const char* id, std::string_view name, std::filesystem::path* val, const TextBoxPathOptions& options = {});
@ -94,6 +93,8 @@ template <typename T> void input_scalar(GUIManager& gui, const char* id, T* val,
gui.element<TextBox<T>>(id, d);
}
template <> void input_scalar<uint8_t>(GUIManager& gui, const char* id, uint8_t* val, uint8_t minVal, uint8_t maxVal, const TextBoxScalarOptions& options);
template <typename TContainer, typename T> void input_scalars_field(GUIManager& gui, const char* id, std::string_view name, TContainer* val, size_t elemCount, T minVal, T maxVal, const TextBoxScalarOptions& options = {}) {
gui.new_id(id, [&] {
left_to_right_line_layout(gui, [&]() {