[Libreoffice-commits] core.git: Branch 'feature/formula-core-rework' - sc/source

Kohei Yoshida kohei.yoshida at gmail.com
Thu Mar 21 20:34:55 PDT 2013


 sc/source/filter/excel/xipivot.cxx |    2 +-
 sc/source/ui/app/transobj.cxx      |   19 ++++++++++++-------
 sc/source/ui/undo/undocell.cxx     |    3 +--
 sc/source/ui/view/viewfun2.cxx     |    7 ++++---
 sc/source/ui/view/viewfun4.cxx     |    4 ++--
 sc/source/ui/view/viewfunc.cxx     |    5 ++++-
 6 files changed, 24 insertions(+), 16 deletions(-)

New commits:
commit 79f7c5d2f96a3182f856577c9a45a666e12ad91d
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Thu Mar 21 23:36:50 2013 -0400

    More on reducing use of ScDocument::PutCell().
    
    Change-Id: I7a911f13cddea829884aa9558d3be6a5e281c144

diff --git a/sc/source/filter/excel/xipivot.cxx b/sc/source/filter/excel/xipivot.cxx
index 646abc1..95a73b6 100644
--- a/sc/source/filter/excel/xipivot.cxx
+++ b/sc/source/filter/excel/xipivot.cxx
@@ -123,7 +123,7 @@ void XclImpPCItem::WriteToSource( const XclImpRoot& rRoot, const ScAddress& rScP
             XclTools::ErrorToEnum( fValue, EXC_BOOLERR_ERROR, nErrCode ) );
         ScFormulaCell* pCell = new ScFormulaCell( &rDoc, rScPos, pScTokArr );
         pCell->SetHybridDouble( fValue );
-        rDoc.PutCell( rScPos, pCell );
+        rDoc.SetFormulaCell(rScPos, pCell);
     }
 }
 
diff --git a/sc/source/ui/app/transobj.cxx b/sc/source/ui/app/transobj.cxx
index b756000..bb67eef 100644
--- a/sc/source/ui/app/transobj.cxx
+++ b/sc/source/ui/app/transobj.cxx
@@ -61,6 +61,7 @@
 #include "viewdata.hxx"
 #include "dociter.hxx"
 #include "cellsuno.hxx"
+#include "stringutil.hxx"
 
 using namespace com::sun::star;
 
@@ -799,19 +800,22 @@ void ScTransferObj::StripRefs( ScDocument* pDoc,
 
                 ScBaseCell* pNew = 0;
                 sal_uInt16 nErrCode = pFCell->GetErrCode();
+                ScAddress aPos(nCol, nRow, nDestTab);
                 if (nErrCode)
                 {
-                    pNew = new ScStringCell( ScGlobal::GetErrorString(nErrCode) );
                     if ( ((const SvxHorJustifyItem*) pDestDoc->GetAttr(
                             nCol,nRow,nDestTab, ATTR_HOR_JUSTIFY))->GetValue() ==
                             SVX_HOR_JUSTIFY_STANDARD )
                         pDestDoc->ApplyAttr( nCol,nRow,nDestTab,
                                 SvxHorJustifyItem(SVX_HOR_JUSTIFY_RIGHT, ATTR_HOR_JUSTIFY) );
+
+                    ScSetStringParam aParam;
+                    aParam.setTextInput();
+                    pDestDoc->SetString(aPos, ScGlobal::GetErrorString(nErrCode));
                 }
                 else if (pFCell->IsValue())
                 {
-                    double fVal = pFCell->GetValue();
-                    pNew = new ScValueCell( fVal );
+                    pDestDoc->SetValue(aPos, pFCell->GetValue());
                 }
                 else
                 {
@@ -823,12 +827,13 @@ void ScTransferObj::StripRefs( ScDocument* pDoc,
                         pDestDoc->SetEditText(ScAddress(nCol,nRow,nDestTab), rEngine.CreateTextObject());
                     }
                     else
-                        pNew = new ScStringCell( aStr );
+                    {
+                        ScSetStringParam aParam;
+                        aParam.setTextInput();
+                        pDestDoc->SetString(aPos, aStr);
+                    }
                 }
 
-                if (pNew)
-                    pDestDoc->PutCell(nCol, nRow, nDestTab, pNew);
-
                 //  number formats
 
                 sal_uLong nOldFormat = ((const SfxUInt32Item*)
diff --git a/sc/source/ui/undo/undocell.cxx b/sc/source/ui/undo/undocell.cxx
index 868dff5..1f61639 100644
--- a/sc/source/ui/undo/undocell.cxx
+++ b/sc/source/ui/undo/undocell.cxx
@@ -706,8 +706,7 @@ void ScUndoThesaurus::DoChange( sal_Bool bUndo, const String& rStr,
             if (pCell->GetCellType() == CELLTYPE_EDIT )
             {
                 // A copy of pTObj will be stored in the cell.
-                ScEditCell* pNewCell = new ScEditCell(*pTObj, pDoc, NULL);
-                pDoc->PutCell( nCol, nRow, nTab, pNewCell );
+                pDoc->SetEditText(ScAddress(nCol,nRow,nTab), *pTObj, pDoc->GetEditPool());
                 if ( !bUndo )
                     SetChangeTrack( pCell );
             }
diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx
index 04c21a2..6494cd2 100644
--- a/sc/source/ui/view/viewfun2.cxx
+++ b/sc/source/ui/view/viewfun2.cxx
@@ -808,12 +808,13 @@ void ScViewFunc::EnterBlock( const String& rString, const EditTextObject* pData
     if (aNewStr.GetChar(0) == '=')                      // Formula ?
     {
         //  SetString not possible, because in Clipboard-Documents nothing will be compiled!
-        ScFormulaCell* pFCell = new ScFormulaCell( pDoc, aPos, aNewStr );
-        pInsDoc->PutCell( nCol, nRow, nTab, pFCell );
+        pInsDoc->SetFormulaCell(aPos, new ScFormulaCell(pDoc, aPos, aNewStr));
     }
     else if ( pData )
+    {
         // A copy of pData will be stored.
-        pInsDoc->PutCell(nCol, nRow, nTab, new ScEditCell(*pData, pDoc, NULL));
+        pInsDoc->SetEditText(aPos, *pData, pDoc->GetEditPool());
+    }
     else
         pInsDoc->SetString( nCol, nRow, nTab, aNewStr );
 
diff --git a/sc/source/ui/view/viewfun4.cxx b/sc/source/ui/view/viewfun4.cxx
index ea05778..944c508 100644
--- a/sc/source/ui/view/viewfun4.cxx
+++ b/sc/source/ui/view/viewfun4.cxx
@@ -259,8 +259,8 @@ void ScViewFunc::DoRefConversion( sal_Bool bRecord )
                         ScTokenArray* pArr = aComp.CompileString( aNew );
                         ScFormulaCell* pNewCell = new ScFormulaCell( pDoc, aPos,
                                                     pArr,formula::FormulaGrammar::GRAM_DEFAULT, MM_NONE );
-                        pDoc->PutCell( aPos, pNewCell );
-                        bOk = sal_True;
+                        pDoc->SetFormulaCell(aPos, pNewCell);
+                        bOk = true;
                     }
                 }
                 pCell = aIter.GetNext();
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index 6d376fb..8cea62d 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -705,7 +705,10 @@ void ScViewFunc::EnterData( SCCOL nCol, SCROW nRow, SCTAB nTab,
         {
             ScMarkData::iterator itr = rMark.begin(), itrEnd = rMark.end();
             for (; itr != itrEnd; ++itr)
-                pDoc->PutCell(nCol, nRow, *itr, new ScEditCell(rData, pDoc, NULL));
+            {
+                ScAddress aPos(nCol, nRow, *itr);
+                pDoc->SetEditText(aPos, rData, pDoc->GetEditPool());
+            }
 
             if ( bRecord )
             {   //  because of ChangeTrack current first


More information about the Libreoffice-commits mailing list