[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-4.1' - 3 commits - sc/source

Kohei Yoshida kohei.yoshida at collabora.com
Thu Feb 27 12:57:21 PST 2014


 sc/source/core/data/column3.cxx   |   25 ++++++++++++++++++++-----
 sc/source/core/tool/token.cxx     |    3 +++
 sc/source/filter/xml/xmlexprt.cxx |    7 -------
 3 files changed, 23 insertions(+), 12 deletions(-)

New commits:
commit 64ea6100c6a6b85bea1d01715b17724de045810a
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 '='.
    
    (cherry picked from commit ca50752c34de4477c696471b707e1b8136e27661)
    
    Conflicts:
    	sc/source/core/data/column3.cxx
    
    Change-Id: I6e0a995f3042240b9f78068b5d0b9b758eb253ed

diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index c19662e..4bd6a5a 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -1185,6 +1185,19 @@ void ScColumn::StartListeningInArea( sc::StartListeningContext& rCxt, SCROW nRow
     }
 }
 
+namespace {
+
+void applyTextNumFormat( ScColumn& rCol, ScDocument& rDoc, SCROW nRow, SvNumberFormatter* pFormatter )
+{
+    sal_uInt32 nFormat = pFormatter->GetStandardFormat(NUMBERFORMAT_TEXT);
+    ScPatternAttr aNewAttrs(rDoc.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 String& rString,
     formula::FormulaGrammar::AddressConvention eConv,
@@ -1217,6 +1230,12 @@ bool ScColumn::ParseString(
     {
         if ( rString.Len() == 1 ) // = Text
             rCell.set(rString);
+        else if (aParam.meSetTextNumFormat == ScSetStringParam::Always)
+        {
+            // Set the cell format type to Text.
+            applyTextNumFormat(*this, *pDocument, nRow, aParam.mpNumFormatter);
+            rCell.set(rString);
+        }
         else // = Formula
             rCell.set(
                 new ScFormulaCell(
@@ -1325,11 +1344,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, *pDocument, nRow, aParam.mpNumFormatter);
             }
 
             rCell.set(rString);
commit ad1aed031148f3e2278eb2c6e3c285cdf61160f7
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Fri Feb 14 20:39:18 2014 -0500

    fdo#72691: Allow overwriting of string value with numeric one.
    
    This can legitimately happen when you have a matrix with a reference to
    another cell inside, and the referenced cell originally contained a
    string value then later overwritten by a numeric value.
    
    Example.  Put a "Text" in A1, and in B1 put a 1x1 matrix {=A1}.  It
    displays "Text" in B1.  Then put 11 in A1.  Prior to this change, B1
    would become blank.  With this change, B1 will display 11.
    
    Change-Id: I3feba3a8658e1a5ebf6f9e5ac34de2d579464ddb
    (cherry picked from commit 9bf907a8278cecd816368db7b8c4ab745a914a59)

diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index 3dff6a9..cd14c4c 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -1084,6 +1084,9 @@ void ScMatrixFormulaCellToken::SetUpperLeftDouble( double f )
         case svDouble:
             const_cast<FormulaToken*>(xUpperLeft.get())->GetDoubleAsReference() = f;
             break;
+        case svString:
+            xUpperLeft = new FormulaDoubleToken( f);
+            break;
         case svUnknown:
             if (!xUpperLeft)
             {
commit 827d589da74b3f6656a7e5726b106bc087ba9bd7
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Fri Feb 14 11:41:02 2014 -0500

    fdo#72390: Let's not skip auto styles from unmodified sheets.
    
    We do re-use sheet XML stream for unmodified sheets on re-save, which
    is okay.  But skipping auto style population from unmodified sheets
    is not okay because autostyles are shared across all sheets and written
    outside the sheet XML streams. Skipping styles from unmodified sheets
    could potentially fail to export used styles, not to mention could
    cause a crash as reported in the bug.
    
    Change-Id: I73e439f7354e341c2c07e28ecca5452193985860
    (cherry picked from commit 5000e64ecc55efd47d92714cf6db375ff37aac4b)
    (cherry picked from commit 47e540d8323e8ea2db5e7aae455503b32f306ca3)

diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx
index 09dc864..4b09c3b 100644
--- a/sc/source/filter/xml/xmlexprt.cxx
+++ b/sc/source/filter/xml/xmlexprt.cxx
@@ -2322,10 +2322,6 @@ void ScXMLExport::_ExportAutoStyles()
         CollectShapesAutoStyles(nTableCount);
         for (sal_Int32 nTable = 0; nTable < nTableCount; ++nTable, IncrementProgressBar(false))
         {
-            bool bUseStream = pSheetData && pDoc && pDoc->IsStreamValid((SCTAB)nTable) &&
-                              pSheetData->HasStreamPos(nTable) && xSourceStream.is() &&
-                              !pDoc->GetChangeTrack();
-
             Reference <sheet::XSpreadsheet> xTable(xIndex->getByIndex(nTable), uno::UNO_QUERY);
             if (!xTable.is())
                 continue;
@@ -2344,9 +2340,6 @@ void ScXMLExport::_ExportAutoStyles()
                 }
             }
 
-            if (bUseStream)
-                continue;
-
             // collect other auto-styles only for non-copied sheets
             Reference<sheet::XUniqueCellFormatRangesSupplier> xCellFormatRanges ( xTable, uno::UNO_QUERY );
             if ( xCellFormatRanges.is() )


More information about the Libreoffice-commits mailing list