@ -3429,7 +3429,7 @@ bool ImGui::TempInputScalar(const ImRect& bb, ImGuiID id, const char* label, ImG
DataTypeFormatString ( data_buf , IM_ARRAYSIZE ( data_buf ) , data_type , p_data , format ) ;
ImStrTrimBlanks ( data_buf ) ;
ImGuiInputTextFlags flags = ImGuiInputTextFlags_AutoSelectAll | ( ImGuiInputTextFlags ) ImGuiInputTextFlags_NoMarkEdited ;
ImGuiInputTextFlags flags = ImGuiInputTextFlags_AutoSelectAll | ( ImGuiInputTextFlags ) ImGuiInputTextFlags_NoMarkEdited | ( ImGuiInputTextFlags ) ImGuiInputTextFlags_LocalizeDecimalPoint ;
bool value_changed = false ;
if ( TempInputText ( bb , id , label , data_buf , IM_ARRAYSIZE ( data_buf ) , flags ) )
@ -3474,6 +3474,7 @@ bool ImGui::InputScalar(const char* label, ImGuiDataType data_type, void* p_data
DataTypeFormatString ( buf , IM_ARRAYSIZE ( buf ) , data_type , p_data , format ) ;
flags | = ImGuiInputTextFlags_AutoSelectAll | ( ImGuiInputTextFlags ) ImGuiInputTextFlags_NoMarkEdited ; // We call MarkItemEdited() ourselves by comparing the actual data rather than the string.
flags | = ( ImGuiInputTextFlags ) ImGuiInputTextFlags_LocalizeDecimalPoint ;
bool value_changed = false ;
if ( p_step = = NULL )
@ -3951,7 +3952,7 @@ static bool InputTextFilterCharacter(ImGuiContext* ctx, unsigned int* p_char, Im
return false ;
// Generic named filters
if ( apply_named_filters & & ( flags & ( ImGuiInputTextFlags_CharsDecimal | ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_CharsUppercase | ImGuiInputTextFlags_CharsNoBlank | ImGuiInputTextFlags_CharsScientific ) ) )
if ( apply_named_filters & & ( flags & ( ImGuiInputTextFlags_CharsDecimal | ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_CharsUppercase | ImGuiInputTextFlags_CharsNoBlank | ImGuiInputTextFlags_CharsScientific | ( ImGuiInputTextFlags ) ImGuiInputTextFlags_LocalizeDecimalPoint ) ) )
{
// The libc allows overriding locale, with e.g. 'setlocale(LC_NUMERIC, "de_DE.UTF-8");' which affect the output/input of printf/scanf to use e.g. ',' instead of '.'.
// The standard mandate that programs starts in the "C" locale where the decimal point is '.'.
@ -3961,7 +3962,7 @@ static bool InputTextFilterCharacter(ImGuiContext* ctx, unsigned int* p_char, Im
// Users of non-default decimal point (in particular ',') may be affected by word-selection logic (is_word_boundary_from_right/is_word_boundary_from_left) functions.
ImGuiContext & g = * ctx ;
const unsigned c_decimal_point = ( unsigned int ) g . IO . PlatformLocaleDecimalPoint ;
if ( flags & ( ImGuiInputTextFlags_CharsDecimal | ImGuiInputTextFlags_CharsScientific ) )
if ( flags & ( ImGuiInputTextFlags_CharsDecimal | ImGuiInputTextFlags_CharsScientific | ( ImGuiInputTextFlags ) ImGuiInputTextFlags_LocalizeDecimalPoint ) )
if ( c = = ' . ' | | c = = ' , ' )
c = c_decimal_point ;