diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-02-18 22:57:39 -0500 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2014-02-19 14:51:10 +0000 |
commit | 563516fc10f1590a5987606de5444643b1b83747 (patch) | |
tree | 294dd2916039ff0e17a62fa0648a0a711262c5c7 | |
parent | 25b1c6a1f16175fceec0176bf64e2e8fcc8871f1 (diff) |
fdo#72491: Always set input as text when that's requested.
Even when the text begins with '='.
Change-Id: I6e0a995f3042240b9f78068b5d0b9b758eb253ed
(cherry picked from commit ca50752c34de4477c696471b707e1b8136e27661)
Reviewed-on: https://gerrit.libreoffice.org/8122
Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | sc/source/core/data/column3.cxx | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index 13ee606901ea..50c52cee5ed8 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -1492,6 +1492,19 @@ void ScColumn::StartListeningInArea( sc::StartListeningContext& rCxt, SCROW nRow sc::ProcessFormula(maCells.begin(), maCells, nRow1, nRow2, aFunc); } +namespace { + +void applyTextNumFormat( ScColumn& rCol, SCROW nRow, SvNumberFormatter* pFormatter ) +{ + sal_uInt32 nFormat = pFormatter->GetStandardFormat(NUMBERFORMAT_TEXT); + ScPatternAttr aNewAttrs(rCol.GetDoc().GetPool()); + SfxItemSet& rSet = aNewAttrs.GetItemSet(); + rSet.Put(SfxUInt32Item(ATTR_VALUE_FORMAT, nFormat)); + rCol.ApplyPattern(nRow, aNewAttrs); +} + +} + bool ScColumn::ParseString( ScCellValue& rCell, SCROW nRow, SCTAB nTabP, const OUString& rString, formula::FormulaGrammar::AddressConvention eConv, @@ -1528,6 +1541,12 @@ bool ScColumn::ParseString( { rCell.set(rPool.intern(rString)); } + else if (aParam.meSetTextNumFormat == ScSetStringParam::Always) + { + // Set the cell format type to Text. + applyTextNumFormat(*this, nRow, aParam.mpNumFormatter); + rCell.set(rPool.intern(rString)); + } else // = Formula rCell.set( new ScFormulaCell( @@ -1632,11 +1651,7 @@ bool ScColumn::ParseString( if (aParam.meSetTextNumFormat != ScSetStringParam::Never && aParam.mpNumFormatter->IsNumberFormat(rString, nIndex, nVal)) { // Set the cell format type to Text. - sal_uInt32 nFormat = aParam.mpNumFormatter->GetStandardFormat(NUMBERFORMAT_TEXT); - ScPatternAttr aNewAttrs(pDocument->GetPool()); - SfxItemSet& rSet = aNewAttrs.GetItemSet(); - rSet.Put( SfxUInt32Item(ATTR_VALUE_FORMAT, nFormat) ); - ApplyPattern(nRow, aNewAttrs); + applyTextNumFormat(*this, nRow, aParam.mpNumFormatter); } rCell.set(rPool.intern(rString)); |