extensions/source/propctrlr/standardcontrol.cxx | 8 ++++++-- vcl/source/window/builder.cxx | 7 ++++++- 2 files changed, 12 insertions(+), 3 deletions(-)
New commits: commit 692b2779c2c927079e656a9fc398d28cc2b08049 Author: Caolán McNamara <[email protected]> AuthorDate: Fri Aug 14 10:29:30 2020 +0100 Commit: Caolán McNamara <[email protected]> CommitDate: Mon Aug 17 14:50:50 2020 +0200 tdf#135526 ranges overflowing to become negative the properties panel uses huge min/maxes which can overflow when the number of digits changes Change-Id: Idbb998a065ce8f2b918fceea2076b794cbde3368 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100697 Reviewed-by: Adolfo Jayme Barrientos <[email protected]> Reviewed-by: Michael Stahl <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/extensions/source/propctrlr/standardcontrol.cxx b/extensions/source/propctrlr/standardcontrol.cxx index dc1891eab122..a9b422440932 100644 --- a/extensions/source/propctrlr/standardcontrol.cxx +++ b/extensions/source/propctrlr/standardcontrol.cxx @@ -327,9 +327,13 @@ namespace pcr return getTypedControlWindow()->get_digits(); } - void SAL_CALL ONumericControl::setDecimalDigits( ::sal_Int16 _decimaldigits ) + void SAL_CALL ONumericControl::setDecimalDigits( ::sal_Int16 decimaldigits ) { - getTypedControlWindow()->set_digits( _decimaldigits ); + weld::MetricSpinButton* pControlWindow = getTypedControlWindow(); + int min, max; + pControlWindow->get_range(min, max, FieldUnit::NONE); + pControlWindow->set_digits(decimaldigits); + pControlWindow->set_range(min, max, FieldUnit::NONE); } Optional< double > SAL_CALL ONumericControl::getMinValue() diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx index d15d3e668937..14d6cdeed6ce 100644 --- a/vcl/source/window/builder.cxx +++ b/vcl/source/window/builder.cxx @@ -321,7 +321,12 @@ namespace weld int MetricSpinButton::ConvertValue(int nValue, FieldUnit eInUnit, FieldUnit eOutUnit) const { - return vcl::ConvertValue(nValue, 0, m_xSpinButton->get_digits(), eInUnit, eOutUnit); + auto nRet = vcl::ConvertValue(nValue, 0, m_xSpinButton->get_digits(), eInUnit, eOutUnit); + if (nRet > SAL_MAX_INT32) + nRet = SAL_MAX_INT32; + else if (nRet < SAL_MIN_INT32) + nRet = SAL_MIN_INT32; + return nRet; } IMPL_LINK(MetricSpinButton, spin_button_input, int*, result, bool) _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
