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/+/100696
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
diff --git a/extensions/source/propctrlr/standardcontrol.cxx b/extensions/source/propctrlr/standardcontrol.cxx
index dc1891e..a9b4224 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 d15d3e6..14d6cde 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)