Kaydet (Commit) 39bee8a2 authored tarafından Caolán McNamara's avatar Caolán McNamara Kaydeden (comit) Miklos Vajna

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: 's avatarMiklos Vajna <vmiklos@collabora.com>
üst 564c0add
...@@ -421,6 +421,8 @@ class SVT_DLLPUBLIC SvtFontSizeBox ...@@ -421,6 +421,8 @@ class SVT_DLLPUBLIC SvtFontSizeBox
FontMetric aFontMetric; FontMetric aFontMetric;
const FontList* pFontList; const FontList* pFontList;
int nSavedValue; int nSavedValue;
int nMin;
int nMax;
FieldUnit eUnit; FieldUnit eUnit;
sal_uInt16 nDecimalDigits; sal_uInt16 nDecimalDigits;
sal_uInt16 nRelMin; sal_uInt16 nRelMin;
...@@ -440,6 +442,7 @@ class SVT_DLLPUBLIC SvtFontSizeBox ...@@ -440,6 +442,7 @@ class SVT_DLLPUBLIC SvtFontSizeBox
void SetDecimalDigits(sal_uInt16 nDigits) { nDecimalDigits = nDigits; } void SetDecimalDigits(sal_uInt16 nDigits) { nDecimalDigits = nDigits; }
FieldUnit GetUnit() const { return eUnit; } FieldUnit GetUnit() const { return eUnit; }
void SetUnit(FieldUnit _eUnit) { eUnit = _eUnit; } void SetUnit(FieldUnit _eUnit) { eUnit = _eUnit; }
void SetRange(int nNewMin, int nNewMax) { nMin = nNewMin; nMax = nNewMax; }
void SetValue(int nNewValue, FieldUnit eInUnit); void SetValue(int nNewValue, FieldUnit eInUnit);
void InsertValue(int i); void InsertValue(int i);
......
...@@ -1400,6 +1400,8 @@ sal_Int64 FontSizeBox::GetValueFromStringUnit(const OUString& rStr, FieldUnit eO ...@@ -1400,6 +1400,8 @@ sal_Int64 FontSizeBox::GetValueFromStringUnit(const OUString& rStr, FieldUnit eO
SvtFontSizeBox::SvtFontSizeBox(std::unique_ptr<weld::ComboBox> p) SvtFontSizeBox::SvtFontSizeBox(std::unique_ptr<weld::ComboBox> p)
: pFontList(nullptr) : pFontList(nullptr)
, nSavedValue(0) , nSavedValue(0)
, nMin(20)
, nMax(9999)
, eUnit(FieldUnit::POINT) , eUnit(FieldUnit::POINT)
, nDecimalDigits(1) , nDecimalDigits(1)
, nRelMin(0) , nRelMin(0)
...@@ -1615,6 +1617,7 @@ void SvtFontSizeBox::SetRelative( bool bNewRelative ) ...@@ -1615,6 +1617,7 @@ void SvtFontSizeBox::SetRelative( bool bNewRelative )
if (bPtRelative) if (bPtRelative)
{ {
SetDecimalDigits( 1 ); SetDecimalDigits( 1 );
SetRange(nPtRelMin, nPtRelMax);
SetUnit(FieldUnit::POINT); SetUnit(FieldUnit::POINT);
short i = nPtRelMin, n = 0; short i = nPtRelMin, n = 0;
...@@ -1628,6 +1631,7 @@ void SvtFontSizeBox::SetRelative( bool bNewRelative ) ...@@ -1628,6 +1631,7 @@ void SvtFontSizeBox::SetRelative( bool bNewRelative )
else else
{ {
SetDecimalDigits(0); SetDecimalDigits(0);
SetRange(nRelMin, nRelMax);
SetUnit(FieldUnit::PERCENT); SetUnit(FieldUnit::PERCENT);
sal_uInt16 i = nRelMin; sal_uInt16 i = nRelMin;
...@@ -1644,6 +1648,7 @@ void SvtFontSizeBox::SetRelative( bool bNewRelative ) ...@@ -1644,6 +1648,7 @@ void SvtFontSizeBox::SetRelative( bool bNewRelative )
m_xComboBox->clear(); m_xComboBox->clear();
bRelative = bPtRelative = false; bRelative = bPtRelative = false;
SetDecimalDigits(1); SetDecimalDigits(1);
SetRange(20, 9999);
SetUnit(FieldUnit::POINT); SetUnit(FieldUnit::POINT);
if ( pFontList) if ( pFontList)
Fill( &aFontMetric, pFontList ); Fill( &aFontMetric, pFontList );
...@@ -1684,6 +1689,10 @@ OUString SvtFontSizeBox::format_number(int nValue) const ...@@ -1684,6 +1689,10 @@ OUString SvtFontSizeBox::format_number(int nValue) const
void SvtFontSizeBox::SetValue(int nNewValue, FieldUnit eInUnit) void SvtFontSizeBox::SetValue(int nNewValue, FieldUnit eInUnit)
{ {
auto nTempValue = MetricField::ConvertValue(nNewValue, 0, GetDecimalDigits(), eInUnit, GetUnit()); auto nTempValue = MetricField::ConvertValue(nNewValue, 0, GetDecimalDigits(), eInUnit, GetUnit());
if (nTempValue < nMin)
nTempValue = nMin;
else if (nTempValue > nMax)
nTempValue = nMax;
if (!bRelative) if (!bRelative)
{ {
FontSizeNames aFontSizeNames(Application::GetSettings().GetUILanguageTag().getLanguageType()); FontSizeNames aFontSizeNames(Application::GetSettings().GetUILanguageTag().getLanguageType());
...@@ -1724,6 +1733,13 @@ int SvtFontSizeBox::get_value() const ...@@ -1724,6 +1733,13 @@ int SvtFontSizeBox::get_value() const
const LocaleDataWrapper& rLocaleData = aSysLocale.GetLocaleData(); const LocaleDataWrapper& rLocaleData = aSysLocale.GetLocaleData();
double fResult(0.0); double fResult(0.0);
MetricFormatter::TextToValue(aStr, fResult, 0, GetDecimalDigits(), rLocaleData, GetUnit()); MetricFormatter::TextToValue(aStr, fResult, 0, GetDecimalDigits(), rLocaleData, GetUnit());
if (!aStr.isEmpty())
{
if (fResult < nMin)
fResult = nMin;
else if (fResult > nMax)
fResult = nMax;
}
return fResult; return fResult;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment