Fix money input field limit without decimal separator.

This commit is contained in:
John Preston 2021-04-19 10:52:14 +04:00
parent 286cb74620
commit c242a61e8c
2 changed files with 17 additions and 9 deletions

View File

@ -96,16 +96,21 @@ struct SimpleFieldState {
if (decimalPosition >= 0) {
Assert(decimalPosition >= skip);
decimalPosition -= skip;
}
if (decimalPosition > digitsLimit) {
if (decimalPosition > digitsLimit) {
state = {
.value = (state.value.mid(0, digitsLimit)
+ state.value.mid(decimalPosition)),
.position = (state.position > digitsLimit
? std::max(
state.position - (decimalPosition - digitsLimit),
digitsLimit)
: state.position),
};
}
} else if (state.value.size() > digitsLimit) {
state = {
.value = (state.value.mid(0, digitsLimit)
+ state.value.mid(decimalPosition)),
.position = (state.position > digitsLimit
? std::max(
state.position - (decimalPosition - digitsLimit),
digitsLimit)
: state.position),
.value = state.value.mid(0, digitsLimit),
.position = std::min(state.position, digitsLimit),
};
}
return state;

View File

@ -131,6 +131,9 @@ QString FillAmountAndCurrency(
int64 amount,
const QString &currency,
bool forceStripDotZero) {
// std::abs doesn't work on that one :/
Expects(amount != std::numeric_limits<int64>::min());
const auto rule = LookupCurrencyRule(currency);
const auto prefix = (amount < 0)