diff --git a/Telegram/SourceFiles/payments/ui/payments_field.cpp b/Telegram/SourceFiles/payments/ui/payments_field.cpp index 1e80217997..97b8244e7c 100644 --- a/Telegram/SourceFiles/payments/ui/payments_field.cpp +++ b/Telegram/SourceFiles/payments/ui/payments_field.cpp @@ -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; diff --git a/Telegram/SourceFiles/ui/text/format_values.cpp b/Telegram/SourceFiles/ui/text/format_values.cpp index 3f48918f84..6e3bd7722e 100644 --- a/Telegram/SourceFiles/ui/text/format_values.cpp +++ b/Telegram/SourceFiles/ui/text/format_values.cpp @@ -131,6 +131,9 @@ QString FillAmountAndCurrency( int64 amount, const QString ¤cy, bool forceStripDotZero) { + // std::abs doesn't work on that one :/ + Expects(amount != std::numeric_limits::min()); + const auto rule = LookupCurrencyRule(currency); const auto prefix = (amount < 0)