[Libreoffice-commits] core.git: Branch 'libreoffice-6-2' - include/svtools svtools/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Fri Jan 25 08:21:06 UTC 2019


 include/svtools/ctrlbox.hxx        |    3 +++
 svtools/source/control/ctrlbox.cxx |   16 ++++++++++++++++
 2 files changed, 19 insertions(+)

New commits:
commit 39bee8a2e148dae05cb65778d1b21c9ea9c97dc4
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Wed Jan 16 17:16:27 2019 +0000
Commit:     Miklos Vajna <vmiklos at collabora.com>
CommitDate: Fri Jan 25 09:20:38 2019 +0100

    Resolves: tdf#122744 pt/% values not limited to historic limits
    
    Change-Id: I439bf27b3f57838d9d0ea19605fd1b684ad4f777
    Reviewed-on: https://gerrit.libreoffice.org/66475
    Tested-by: Jenkins
    Reviewed-by: Miklos Vajna <vmiklos at collabora.com>

diff --git a/include/svtools/ctrlbox.hxx b/include/svtools/ctrlbox.hxx
index ef2687cc24b0..5b2583e5ce13 100644
--- a/include/svtools/ctrlbox.hxx
+++ b/include/svtools/ctrlbox.hxx
@@ -421,6 +421,8 @@ class SVT_DLLPUBLIC SvtFontSizeBox
     FontMetric      aFontMetric;
     const FontList* pFontList;
     int             nSavedValue;
+    int             nMin;
+    int             nMax;
     FieldUnit       eUnit;
     sal_uInt16      nDecimalDigits;
     sal_uInt16      nRelMin;
@@ -440,6 +442,7 @@ class SVT_DLLPUBLIC SvtFontSizeBox
     void SetDecimalDigits(sal_uInt16 nDigits) { nDecimalDigits = nDigits; }
     FieldUnit GetUnit() const { return eUnit; }
     void SetUnit(FieldUnit _eUnit) { eUnit = _eUnit; }
+    void SetRange(int nNewMin, int nNewMax) { nMin = nNewMin; nMax = nNewMax; }
     void SetValue(int nNewValue, FieldUnit eInUnit);
 
     void InsertValue(int i);
diff --git a/svtools/source/control/ctrlbox.cxx b/svtools/source/control/ctrlbox.cxx
index 112ce7ea2da2..9e5e6e2640c6 100644
--- a/svtools/source/control/ctrlbox.cxx
+++ b/svtools/source/control/ctrlbox.cxx
@@ -1400,6 +1400,8 @@ sal_Int64 FontSizeBox::GetValueFromStringUnit(const OUString& rStr, FieldUnit eO
 SvtFontSizeBox::SvtFontSizeBox(std::unique_ptr<weld::ComboBox> p)
     : pFontList(nullptr)
     , nSavedValue(0)
+    , nMin(20)
+    , nMax(9999)
     , eUnit(FieldUnit::POINT)
     , nDecimalDigits(1)
     , nRelMin(0)
@@ -1615,6 +1617,7 @@ void SvtFontSizeBox::SetRelative( bool bNewRelative )
         if (bPtRelative)
         {
             SetDecimalDigits( 1 );
+            SetRange(nPtRelMin, nPtRelMax);
             SetUnit(FieldUnit::POINT);
 
             short i = nPtRelMin, n = 0;
@@ -1628,6 +1631,7 @@ void SvtFontSizeBox::SetRelative( bool bNewRelative )
         else
         {
             SetDecimalDigits(0);
+            SetRange(nRelMin, nRelMax);
             SetUnit(FieldUnit::PERCENT);
 
             sal_uInt16 i = nRelMin;
@@ -1644,6 +1648,7 @@ void SvtFontSizeBox::SetRelative( bool bNewRelative )
             m_xComboBox->clear();
         bRelative = bPtRelative = false;
         SetDecimalDigits(1);
+        SetRange(20, 9999);
         SetUnit(FieldUnit::POINT);
         if ( pFontList)
             Fill( &aFontMetric, pFontList );
@@ -1684,6 +1689,10 @@ OUString SvtFontSizeBox::format_number(int nValue) const
 void SvtFontSizeBox::SetValue(int nNewValue, FieldUnit eInUnit)
 {
     auto nTempValue = MetricField::ConvertValue(nNewValue, 0, GetDecimalDigits(), eInUnit, GetUnit());
+    if (nTempValue < nMin)
+        nTempValue = nMin;
+    else if (nTempValue > nMax)
+        nTempValue = nMax;
     if (!bRelative)
     {
         FontSizeNames aFontSizeNames(Application::GetSettings().GetUILanguageTag().getLanguageType());
@@ -1724,6 +1733,13 @@ int SvtFontSizeBox::get_value() const
     const LocaleDataWrapper& rLocaleData = aSysLocale.GetLocaleData();
     double fResult(0.0);
     MetricFormatter::TextToValue(aStr, fResult, 0, GetDecimalDigits(), rLocaleData, GetUnit());
+    if (!aStr.isEmpty())
+    {
+        if (fResult < nMin)
+            fResult = nMin;
+        else if (fResult > nMax)
+            fResult = nMax;
+    }
     return fResult;
 }
 


More information about the Libreoffice-commits mailing list