[Libreoffice-commits] core.git: Branch 'libreoffice-4-2' - sc/source

Kohei Yoshida kohei.yoshida at collabora.com
Wed Feb 19 15:51:38 CET 2014


 sc/source/core/data/column3.cxx |   25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

New commits:
commit 563516fc10f1590a5987606de5444643b1b83747
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Tue Feb 18 22:57:39 2014 -0500

    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 at googlemail.com>
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 13ee606..50c52ce 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));


More information about the Libreoffice-commits mailing list