Skip to content

Commit f853c8d

Browse files
committed
Respect locale decimal separator in input fields
1 parent 8c74dde commit f853c8d

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

src/gui/qgsfieldvalidator.cpp

+20-2
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,16 @@ QgsFieldValidator::QgsFieldValidator( QObject *parent, const QgsField &field, co
5656
{
5757
if ( mField.length() > 0 && mField.precision() > 0 )
5858
{
59-
QString re = QStringLiteral( "-?\\d{0,%1}([\\.,]\\d{0,%2})?" ).arg( mField.length() - mField.precision() ).arg( mField.precision() );
59+
QString re;
60+
// Also accept locale's decimalPoint if it's not a dot
61+
if ( QLocale().decimalPoint() != '.' )
62+
{
63+
re = QStringLiteral( "-?\\d{0,%1}([\\.%2]\\d{0,%3})?" ).arg( mField.length() - mField.precision() ).arg( QLocale().decimalPoint() ).arg( mField.precision() );
64+
}
65+
else
66+
{
67+
re = QStringLiteral( "-?\\d{0,%1}([\\.,]\\d{0,%2})?" ).arg( mField.length() - mField.precision() ).arg( mField.precision() );
68+
}
6069
mValidator = new QRegExpValidator( QRegExp( re ), parent );
6170
}
6271
else if ( mField.length() > 0 && mField.precision() == 0 )
@@ -66,7 +75,16 @@ QgsFieldValidator::QgsFieldValidator( QObject *parent, const QgsField &field, co
6675
}
6776
else if ( mField.precision() > 0 )
6877
{
69-
QString re = QStringLiteral( "-?\\d*([\\.,]\\d{0,%1})?" ).arg( mField.precision() );
78+
QString re;
79+
// Also accept locale's decimalPoint if it's not a dot
80+
if ( QLocale().decimalPoint() != '.' )
81+
{
82+
re = QStringLiteral( "-?\\d*([\\.%1]\\d{0,%2})?" ).arg( QLocale().decimalPoint(), mField.precision() );
83+
}
84+
else
85+
{
86+
re = QStringLiteral( "-?\\d*([\\.]\\d{0,%1})?" ).arg( mField.precision() );
87+
}
7088
mValidator = new QRegExpValidator( QRegExp( re ), parent );
7189
}
7290
else

0 commit comments

Comments
 (0)