[Libreoffice-commits] core.git: Branch 'private/kohei/sort-ref-update' - 3 commits - sc/inc sc/Library_sc.mk sc/qa sc/source
Kohei Yoshida
kohei.yoshida at collabora.com
Fri Jun 27 13:25:40 PDT 2014
sc/Library_sc.mk | 1 +
sc/inc/document.hxx | 3 ++-
sc/inc/refhint.hxx | 12 ++++++------
sc/inc/sortparam.hxx | 13 +++++++++++++
sc/inc/table.hxx | 8 +++++---
sc/inc/tokenarray.hxx | 8 ++++++--
sc/inc/types.hxx | 3 +--
sc/inc/undosort.hxx | 34 ++++++++++++++++++++++++++++++++++
sc/qa/unit/ucalc.cxx | 12 ++++++------
sc/source/core/data/documen3.cxx | 5 +++--
sc/source/core/data/formulacell.cxx | 9 ++++++---
sc/source/core/data/table3.cxx | 25 ++++++++++++++-----------
sc/source/core/tool/refhint.cxx | 8 ++++----
sc/source/core/tool/token.cxx | 14 +++++++-------
sc/source/ui/docshell/dbdocfun.cxx | 18 +++++++++++++++++-
sc/source/ui/undo/undosort.cxx | 34 ++++++++++++++++++++++++++++++++++
16 files changed, 159 insertions(+), 48 deletions(-)
New commits:
commit 9e66aa3a2bb1b103442166cb642ff6085f38b770
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Fri Jun 27 16:24:36 2014 -0400
Set up a new undo sort mechanism. It's empty for now.
Change-Id: I14a235f050d64d64d1102a688a304249afacf802
diff --git a/sc/Library_sc.mk b/sc/Library_sc.mk
index 8e42c63..639946a 100644
--- a/sc/Library_sc.mk
+++ b/sc/Library_sc.mk
@@ -518,6 +518,7 @@ $(eval $(call gb_Library_add_exception_objects,sc,\
sc/source/ui/undo/undodraw \
sc/source/ui/undo/undoolk \
sc/source/ui/undo/undorangename \
+ sc/source/ui/undo/undosort \
sc/source/ui/undo/undostyl \
sc/source/ui/undo/undotab \
sc/source/ui/undo/undoutil \
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 5897fe3..848e162 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -79,6 +79,7 @@ class CellValues;
class RowHeightContext;
struct SetFormulaDirtyContext;
class RefMovedHint;
+struct SortUndoParam;
}
@@ -1675,7 +1676,7 @@ public:
SC_DLLPUBLIC SvNumberFormatter* GetFormatTable() const;
SC_DLLPUBLIC SvNumberFormatter* CreateFormatTable() const;
- void Sort( SCTAB nTab, const ScSortParam& rSortParam, bool bKeepQuery, ScProgress* pProgress );
+ void Sort( SCTAB nTab, const ScSortParam& rSortParam, bool bKeepQuery, ScProgress* pProgress, sc::SortUndoParam* pUndo );
SCSIZE Query( SCTAB nTab, const ScQueryParam& rQueryParam, bool bKeepSub );
SC_DLLPUBLIC bool CreateQueryParam( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
SCTAB nTab, ScQueryParam& rQueryParam );
diff --git a/sc/inc/sortparam.hxx b/sc/inc/sortparam.hxx
index 55b09a6..df3a449 100644
--- a/sc/inc/sortparam.hxx
+++ b/sc/inc/sortparam.hxx
@@ -78,6 +78,19 @@ struct SC_DLLPUBLIC ScSortParam
inline sal_uInt16 GetSortKeyCount() const { return maKeyState.size(); }
};
+namespace sc {
+
+struct SC_DLLPUBLIC SortUndoParam
+{
+ ScRange maSortRange;
+ std::vector<SCCOLROW> maOldIndices;
+ bool mbHasHeader;
+ bool mbByRow;
+ bool mbIncludePattern;
+};
+
+}
+
#endif // INCLUDED_SC_INC_SORTPARAM_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx
index 580b738..649d8e6 100644
--- a/sc/inc/table.hxx
+++ b/sc/inc/table.hxx
@@ -73,6 +73,7 @@ class RowHeightContext;
class CompileFormulaContext;
struct SetFormulaDirtyContext;
class RefMovedHint;
+struct SortUndoParam;
}
@@ -824,7 +825,8 @@ public:
void StripHidden( SCCOL& rX1, SCROW& rY1, SCCOL& rX2, SCROW& rY2 );
void ExtendHidden( SCCOL& rX1, SCROW& rY1, SCCOL& rX2, SCROW& rY2 );
- void Sort(const ScSortParam& rSortParam, bool bKeepQuery, ScProgress* pProgress);
+ void Sort(
+ const ScSortParam& rSortParam, bool bKeepQuery, ScProgress* pProgress, sc::SortUndoParam* pUndo );
bool ValidQuery(
SCROW nRow, const ScQueryParam& rQueryParam, ScRefCellValue* pCell = NULL,
bool* pbTestEqualCondition = NULL);
@@ -1019,8 +1021,8 @@ private:
short Compare( ScSortInfoArray*, SCCOLROW nIndex1, SCCOLROW nIndex2) const;
ScSortInfoArray* CreateSortInfoArray( SCCOLROW nInd1, SCCOLROW nInd2, bool bKeepQuery );
void QuickSort( ScSortInfoArray*, SCsCOLROW nLo, SCsCOLROW nHi);
- void SortReorderByColumn( ScSortInfoArray* pArray, ScProgress* pProgress );
- void SortReorderByRow( ScSortInfoArray* pArray, ScProgress* pProgress );
+ void SortReorderByColumn( ScSortInfoArray* pArray, ScProgress* pProgress, sc::SortUndoParam* pUndo );
+ void SortReorderByRow( ScSortInfoArray* pArray, ScProgress* pProgress, sc::SortUndoParam* pUndo );
bool CreateExcelQuery(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, ScQueryParam& rQueryParam);
bool CreateStarQuery(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, ScQueryParam& rQueryParam);
diff --git a/sc/inc/undosort.hxx b/sc/inc/undosort.hxx
new file mode 100644
index 0000000..d7a4512
--- /dev/null
+++ b/sc/inc/undosort.hxx
@@ -0,0 +1,34 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_SC_UNDOSORT_HXX
+#define INCLUDED_SC_UNDOSORT_HXX
+
+#include <undobase.hxx>
+#include <sortparam.hxx>
+
+namespace sc {
+
+class UndoSort : public ScSimpleUndo
+{
+ SortUndoParam maParam;
+
+public:
+ UndoSort( ScDocShell* pDocSh, const SortUndoParam& rParam );
+
+ virtual OUString GetComment() const;
+ virtual void Undo();
+ virtual void Redo();
+};
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index d412abd..b852010 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -4810,7 +4810,7 @@ void Test::testSortWithFormulaRefs()
aSortData.maKeyState[0].bDoSort = true;
aSortData.maKeyState[0].nField = 0;
- m_pDoc->Sort(0, aSortData, false, NULL);
+ m_pDoc->Sort(0, aSortData, false, NULL, NULL);
for (size_t i = 0; i < SAL_N_ELEMENTS(aResults); ++i)
{
@@ -4845,7 +4845,7 @@ void Test::testSortWithStrings()
aParam.maKeyState[0].bAscending = true;
aParam.maKeyState[0].nField = 1;
- m_pDoc->Sort(0, aParam, false, NULL);
+ m_pDoc->Sort(0, aParam, false, NULL, NULL);
CPPUNIT_ASSERT_EQUAL(OUString("Header"), m_pDoc->GetString(ScAddress(1,1,0)));
CPPUNIT_ASSERT_EQUAL(OUString("Val1"), m_pDoc->GetString(ScAddress(1,2,0)));
@@ -4853,7 +4853,7 @@ void Test::testSortWithStrings()
aParam.maKeyState[0].bAscending = false;
- m_pDoc->Sort(0, aParam, false, NULL);
+ m_pDoc->Sort(0, aParam, false, NULL, NULL);
CPPUNIT_ASSERT_EQUAL(OUString("Header"), m_pDoc->GetString(ScAddress(1,1,0)));
CPPUNIT_ASSERT_EQUAL(OUString("Val2"), m_pDoc->GetString(ScAddress(1,2,0)));
@@ -4896,7 +4896,7 @@ void Test::testSort()
aSortData.maKeyState[0].nField = 1;
aSortData.maKeyState[0].bAscending = true;
- m_pDoc->Sort(0, aSortData, false, NULL);
+ m_pDoc->Sort(0, aSortData, false, NULL, NULL);
double nVal = m_pDoc->GetValue(1,0,0);
ASSERT_DOUBLES_EQUAL(nVal, 1.0);
@@ -4929,7 +4929,7 @@ void Test::testSort()
aSortData.nRow2 = aDataRange.aEnd.Row();
aSortData.bHasHeader = true;
aSortData.maKeyState[0].nField = 0;
- m_pDoc->Sort(0, aSortData, false, NULL);
+ m_pDoc->Sort(0, aSortData, false, NULL, NULL);
// Title should stay at the top, numbers should be sorted numerically,
// numbers always come before strings, and empty cells always occur at the
@@ -5059,7 +5059,7 @@ void Test::testSortInFormulaGroup()
aSortData.maKeyState[0].nField = 0;
aSortData.maKeyState[0].bAscending = true;
- m_pDoc->Sort(0, aSortData, false, NULL);
+ m_pDoc->Sort(0, aSortData, false, NULL, NULL);
static struct {
SCCOL nCol;
diff --git a/sc/source/core/data/documen3.cxx b/sc/source/core/data/documen3.cxx
index 766125c..38162ce 100644
--- a/sc/source/core/data/documen3.cxx
+++ b/sc/source/core/data/documen3.cxx
@@ -1335,13 +1335,14 @@ bool ScDocument::UpdateOutlineRow( SCROW nStartRow, SCROW nEndRow, SCTAB nTab, b
return false;
}
-void ScDocument::Sort(SCTAB nTab, const ScSortParam& rSortParam, bool bKeepQuery, ScProgress* pProgress)
+void ScDocument::Sort(
+ SCTAB nTab, const ScSortParam& rSortParam, bool bKeepQuery, ScProgress* pProgress, sc::SortUndoParam* pUndo )
{
if ( ValidTab(nTab) && nTab < static_cast<SCTAB>(maTabs.size()) && maTabs[nTab] )
{
bool bOldEnableIdle = IsIdleEnabled();
EnableIdle(false);
- maTabs[nTab]->Sort(rSortParam, bKeepQuery, pProgress);
+ maTabs[nTab]->Sort(rSortParam, bKeepQuery, pProgress, pUndo);
EnableIdle(bOldEnableIdle);
}
}
diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx
index 1ffc739..1283ee1 100644
--- a/sc/source/core/data/table3.cxx
+++ b/sc/source/core/data/table3.cxx
@@ -560,7 +560,8 @@ public:
}
-void ScTable::SortReorderByColumn( ScSortInfoArray* pArray, ScProgress* pProgress )
+void ScTable::SortReorderByColumn(
+ ScSortInfoArray* pArray, ScProgress* pProgress, sc::SortUndoParam* pUndo )
{
size_t nCount = pArray->GetCount();
SCCOLROW nStart = pArray->GetStart();
@@ -637,7 +638,8 @@ void ScTable::SortReorderByColumn( ScSortInfoArray* pArray, ScProgress* pProgres
}
}
-void ScTable::SortReorderByRow( ScSortInfoArray* pArray, ScProgress* pProgress )
+void ScTable::SortReorderByRow(
+ ScSortInfoArray* pArray, ScProgress* pProgress, sc::SortUndoParam* pUndo )
{
SCROW nRow1 = pArray->GetStart();
SCROW nRow2 = pArray->GetLast();
@@ -1090,7 +1092,8 @@ void ScTable::DecoladeRow( ScSortInfoArray* pArray, SCROW nRow1, SCROW nRow2 )
}
}
-void ScTable::Sort(const ScSortParam& rSortParam, bool bKeepQuery, ScProgress* pProgress)
+void ScTable::Sort(
+ const ScSortParam& rSortParam, bool bKeepQuery, ScProgress* pProgress, sc::SortUndoParam* pUndo )
{
aSortParam = rSortParam;
InitSortCollator( rSortParam );
@@ -1114,7 +1117,7 @@ void ScTable::Sort(const ScSortParam& rSortParam, bool bKeepQuery, ScProgress* p
DecoladeRow(pArray.get(), nRow1, nLastRow);
QuickSort(pArray.get(), nRow1, nLastRow);
- SortReorderByRow(pArray.get(), pProgress);
+ SortReorderByRow(pArray.get(), pProgress, pUndo);
// #i59745# update position of caption objects of cell notes --> reported at (SortReorder) ScColumn::SwapCellNotes level
}
@@ -1136,7 +1139,7 @@ void ScTable::Sort(const ScSortParam& rSortParam, bool bKeepQuery, ScProgress* p
boost::scoped_ptr<ScSortInfoArray> pArray(CreateSortInfoArray(nCol1, nLastCol, bKeepQuery));
QuickSort(pArray.get(), nCol1, nLastCol);
- SortReorderByColumn(pArray.get(), pProgress);
+ SortReorderByColumn(pArray.get(), pProgress, pUndo);
// #i59745# update position of caption objects of cell notes --> reported at (SortReorder) ScColumn::SwapCellNotes level
}
diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx
index b422213..a57809b 100644
--- a/sc/source/ui/docshell/dbdocfun.cxx
+++ b/sc/source/ui/docshell/dbdocfun.cxx
@@ -47,6 +47,7 @@
#include "queryentry.hxx"
#include "markdata.hxx"
#include "progress.hxx"
+#include <undosort.hxx>
#include <set>
#include <memory>
@@ -474,7 +475,9 @@ bool ScDBDocFunc::Sort( SCTAB nTab, const ScSortParam& rSortParam,
if (bRecord && !rDoc.IsUndoEnabled())
bRecord = false;
+#if 0
ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
+#endif
ScDBData* pDBData = rDoc.GetDBAtArea( nTab, rSortParam.nCol1, rSortParam.nRow1,
rSortParam.nCol2, rSortParam.nRow2 );
@@ -549,6 +552,7 @@ bool ScDBDocFunc::Sort( SCTAB nTab, const ScSortParam& rSortParam,
if ( aQueryParam.GetEntry(0).bDoQuery )
bRepeatQuery = true;
+#if 0
ScUndoSort* pUndoAction = 0;
if ( bRecord )
{
@@ -586,12 +590,22 @@ bool ScDBDocFunc::Sort( SCTAB nTab, const ScSortParam& rSortParam,
if( pDrawLayer )
pDrawLayer->BeginCalcUndo(false);
}
+#endif
+
+ sc::SortUndoParam aUndoParam;
// don't call ScDocument::Sort with an empty SortParam (may be empty here if bCopy is set)
if (aLocalParam.GetSortKeyCount() && aLocalParam.maKeyState[0].bDoSort)
{
ScProgress aProgress(&rDocShell, ScGlobal::GetRscString(STR_PROGRESS_SORTING), 0);
- rDoc.Sort( nTab, aLocalParam, bRepeatQuery, &aProgress );
+ rDoc.Sort(nTab, aLocalParam, bRepeatQuery, &aProgress, &aUndoParam);
+ }
+
+ if (bRecord)
+ {
+ // Set up an undo object.
+ sc::UndoSort* pUndoAction = new sc::UndoSort(&rDocShell, aUndoParam);
+ rDocShell.GetUndoManager()->AddUndoAction(pUndoAction);
}
pDBData->SetSortParam(rSortParam);
@@ -620,9 +634,11 @@ bool ScDBDocFunc::Sort( SCTAB nTab, const ScSortParam& rSortParam,
if (!bUniformRowHeight)
rDocShell.AdjustRowHeight(nStartRow, aLocalParam.nRow2, nTab);
+#if 0
// #i59745# set collected drawing undo actions at sorting undo action
if( pUndoAction && pDrawLayer )
pUndoAction->SetDrawUndoAction( pDrawLayer->GetCalcUndo() );
+#endif
aModificator.SetDocumentModified();
diff --git a/sc/source/ui/undo/undosort.cxx b/sc/source/ui/undo/undosort.cxx
new file mode 100644
index 0000000..09671bc
--- /dev/null
+++ b/sc/source/ui/undo/undosort.cxx
@@ -0,0 +1,34 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <undosort.hxx>
+#include <globstr.hrc>
+#include <global.hxx>
+
+namespace sc {
+
+UndoSort::UndoSort( ScDocShell* pDocSh, const SortUndoParam& rParam ) :
+ ScSimpleUndo(pDocSh), maParam(rParam) {}
+
+OUString UndoSort::GetComment() const
+{
+ return ScGlobal::GetRscString(STR_UNDO_SORT);
+}
+
+void UndoSort::Undo()
+{
+}
+
+void UndoSort::Redo()
+{
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit d0d3b29ebdec86b0a6a34ecefdaebf4b1cd8b338
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Fri Jun 27 14:30:33 2014 -0400
Use one map type for both column and row mapping.
Change-Id: I7581ece97113acc88ff12fabec66c46c706bad3e
diff --git a/sc/inc/refhint.hxx b/sc/inc/refhint.hxx
index 81449ad..1eff906 100644
--- a/sc/inc/refhint.hxx
+++ b/sc/inc/refhint.hxx
@@ -61,16 +61,16 @@ public:
class RefColReorderHint : public RefHint
{
- const sc::ColReorderMapType& mrColMap;
+ const sc::ColRowReorderMapType& mrColMap;
SCTAB mnTab;
SCROW mnRow1;
SCROW mnRow2;
public:
- RefColReorderHint( const sc::ColReorderMapType& rColMap, SCTAB nTab, SCROW nRow1, SCROW nRow2 );
+ RefColReorderHint( const sc::ColRowReorderMapType& rColMap, SCTAB nTab, SCROW nRow1, SCROW nRow2 );
virtual ~RefColReorderHint();
- const sc::ColReorderMapType& getColMap() const;
+ const sc::ColRowReorderMapType& getColMap() const;
SCTAB getTab() const;
SCROW getStartRow() const;
@@ -79,16 +79,16 @@ public:
class RefRowReorderHint : public RefHint
{
- const sc::RowReorderMapType& mrRowMap;
+ const sc::ColRowReorderMapType& mrRowMap;
SCTAB mnTab;
SCCOL mnCol1;
SCCOL mnCol2;
public:
- RefRowReorderHint( const sc::RowReorderMapType& rRowMap, SCTAB nTab, SCCOL nCol1, SCCOL nCol2 );
+ RefRowReorderHint( const sc::ColRowReorderMapType& rRowMap, SCTAB nTab, SCCOL nCol1, SCCOL nCol2 );
virtual ~RefRowReorderHint();
- const sc::RowReorderMapType& getRowMap() const;
+ const sc::ColRowReorderMapType& getRowMap() const;
SCTAB getTab() const;
SCCOL getStartColumn() const;
diff --git a/sc/inc/tokenarray.hxx b/sc/inc/tokenarray.hxx
index 375dd3a..8ae6145 100644
--- a/sc/inc/tokenarray.hxx
+++ b/sc/inc/tokenarray.hxx
@@ -168,9 +168,13 @@ public:
* @param nRow2 bottom row of reordered range.
* @param rColMap old-to-new column mapping.
*/
- void MoveReferenceColReorder( const ScAddress& rPos, SCTAB nTab, SCROW nRow1, SCROW nRow2, const sc::ColReorderMapType& rColMap );
+ void MoveReferenceColReorder(
+ const ScAddress& rPos, SCTAB nTab, SCROW nRow1, SCROW nRow2,
+ const sc::ColRowReorderMapType& rColMap );
- void MoveReferenceRowReorder( const ScAddress& rPos, SCTAB nTab, SCCOL nCol1, SCCOL nCol2, const sc::RowReorderMapType& rRowMap );
+ void MoveReferenceRowReorder(
+ const ScAddress& rPos, SCTAB nTab, SCCOL nCol1, SCCOL nCol2,
+ const sc::ColRowReorderMapType& rRowMap );
/**
* Adjust all references in named expression. In named expression, we only
diff --git a/sc/inc/types.hxx b/sc/inc/types.hxx
index 976baaf..37784dc 100644
--- a/sc/inc/types.hxx
+++ b/sc/inc/types.hxx
@@ -98,8 +98,7 @@ struct RangeMatrix
bool isRangeValid() const;
};
-typedef boost::unordered_map<SCCOL,SCCOL> ColReorderMapType;
-typedef boost::unordered_map<SCROW,SCROW> RowReorderMapType;
+typedef boost::unordered_map<SCCOLROW,SCCOLROW> ColRowReorderMapType;
}
diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx
index b107464..1ffc739 100644
--- a/sc/source/core/data/table3.cxx
+++ b/sc/source/core/data/table3.cxx
@@ -542,8 +542,8 @@ public:
}
};
-typedef ReorderNotifier<sc::RefColReorderHint, sc::ColReorderMapType, SCROW> ColReorderNotifier;
-typedef ReorderNotifier<sc::RefRowReorderHint, sc::RowReorderMapType, SCROW> RowReorderNotifier;
+typedef ReorderNotifier<sc::RefColReorderHint, sc::ColRowReorderMapType, SCCOL> ColReorderNotifier;
+typedef ReorderNotifier<sc::RefRowReorderHint, sc::ColRowReorderMapType, SCROW> RowReorderNotifier;
class FormulaGroupPosCollector : std::unary_function<SvtListener*, void>
{
@@ -603,13 +603,13 @@ void ScTable::SortReorderByColumn( ScSortInfoArray* pArray, ScProgress* pProgres
aCol[nCol].ResetFormulaCellPositions(aSortParam.nRow1, aSortParam.nRow2);
// Set up column reorder map (for later broadcasting of reference updates).
- sc::ColReorderMapType aColMap;
+ sc::ColRowReorderMapType aColMap;
const std::vector<SCCOLROW>& rOldIndices = pArray->GetOldIndices();
for (size_t i = 0, n = rOldIndices.size(); i < n; ++i)
{
SCCOL nNew = i + nStart;
SCCOL nOld = rOldIndices[i];
- aColMap.insert(sc::ColReorderMapType::value_type(nOld, nNew));
+ aColMap.insert(sc::ColRowReorderMapType::value_type(nOld, nNew));
}
// Collect all listeners within sorted range ahead of time.
@@ -817,13 +817,13 @@ void ScTable::SortReorderByRow( ScSortInfoArray* pArray, ScProgress* pProgress )
}
// Set up row reorder map (for later broadcasting of reference updates).
- sc::RowReorderMapType aRowMap;
+ sc::ColRowReorderMapType aRowMap;
const std::vector<SCCOLROW>& rOldIndices = pArray->GetOldIndices();
for (size_t i = 0, n = rOldIndices.size(); i < n; ++i)
{
SCROW nNew = i + nRow1;
SCROW nOld = rOldIndices[i];
- aRowMap.insert(sc::RowReorderMapType::value_type(nOld, nNew));
+ aRowMap.insert(sc::ColRowReorderMapType::value_type(nOld, nNew));
}
// Collect all listeners within sorted range ahead of time.
diff --git a/sc/source/core/tool/refhint.cxx b/sc/source/core/tool/refhint.cxx
index 8e5540a..533a41b 100644
--- a/sc/source/core/tool/refhint.cxx
+++ b/sc/source/core/tool/refhint.cxx
@@ -34,12 +34,12 @@ const ScAddress& RefMovedHint::getDelta() const
return maMoveDelta;
}
-RefColReorderHint::RefColReorderHint( const sc::ColReorderMapType& rColMap, SCTAB nTab, SCROW nRow1, SCROW nRow2 ) :
+RefColReorderHint::RefColReorderHint( const sc::ColRowReorderMapType& rColMap, SCTAB nTab, SCROW nRow1, SCROW nRow2 ) :
RefHint(ColumnReordered), mrColMap(rColMap), mnTab(nTab), mnRow1(nRow1), mnRow2(nRow2) {}
RefColReorderHint::~RefColReorderHint() {}
-const sc::ColReorderMapType& RefColReorderHint::getColMap() const
+const sc::ColRowReorderMapType& RefColReorderHint::getColMap() const
{
return mrColMap;
}
@@ -59,12 +59,12 @@ SCROW RefColReorderHint::getEndRow() const
return mnRow2;
}
-RefRowReorderHint::RefRowReorderHint( const sc::RowReorderMapType& rRowMap, SCTAB nTab, SCCOL nCol1, SCCOL nCol2 ) :
+RefRowReorderHint::RefRowReorderHint( const sc::ColRowReorderMapType& rRowMap, SCTAB nTab, SCCOL nCol1, SCCOL nCol2 ) :
RefHint(RowReordered), mrRowMap(rRowMap), mnTab(nTab), mnCol1(nCol1), mnCol2(nCol2) {}
RefRowReorderHint::~RefRowReorderHint() {}
-const sc::RowReorderMapType& RefRowReorderHint::getRowMap() const
+const sc::ColRowReorderMapType& RefRowReorderHint::getRowMap() const
{
return mrRowMap;
}
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index fcf76a2..54e233c 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -2883,7 +2883,7 @@ void ScTokenArray::MoveReference(
}
void ScTokenArray::MoveReferenceColReorder(
- const ScAddress& rPos, SCTAB nTab, SCROW nRow1, SCROW nRow2, const sc::ColReorderMapType& rColMap )
+ const ScAddress& rPos, SCTAB nTab, SCROW nRow1, SCROW nRow2, const sc::ColRowReorderMapType& rColMap )
{
FormulaToken** p = pCode;
FormulaToken** pEnd = p + static_cast<size_t>(nLen);
@@ -2900,7 +2900,7 @@ void ScTokenArray::MoveReferenceColReorder(
if (aAbs.Tab() == nTab && nRow1 <= aAbs.Row() && aAbs.Row() <= nRow2)
{
// Inside reordered row range.
- sc::ColReorderMapType::const_iterator it = rColMap.find(aAbs.Col());
+ sc::ColRowReorderMapType::const_iterator it = rColMap.find(aAbs.Col());
if (it != rColMap.end())
{
// This column is reordered.
@@ -2928,7 +2928,7 @@ void ScTokenArray::MoveReferenceColReorder(
if (aAbs.aStart.Tab() == nTab && nRow1 <= aAbs.aStart.Row() && aAbs.aEnd.Row() <= nRow2)
{
// Inside reordered row range.
- sc::ColReorderMapType::const_iterator it = rColMap.find(aAbs.aStart.Col());
+ sc::ColRowReorderMapType::const_iterator it = rColMap.find(aAbs.aStart.Col());
if (it != rColMap.end())
{
// This column is reordered.
@@ -2946,7 +2946,7 @@ void ScTokenArray::MoveReferenceColReorder(
}
}
-void ScTokenArray::MoveReferenceRowReorder( const ScAddress& rPos, SCTAB nTab, SCCOL nCol1, SCCOL nCol2, const sc::RowReorderMapType& rRowMap )
+void ScTokenArray::MoveReferenceRowReorder( const ScAddress& rPos, SCTAB nTab, SCCOL nCol1, SCCOL nCol2, const sc::ColRowReorderMapType& rRowMap )
{
FormulaToken** p = pCode;
FormulaToken** pEnd = p + static_cast<size_t>(nLen);
@@ -2963,7 +2963,7 @@ void ScTokenArray::MoveReferenceRowReorder( const ScAddress& rPos, SCTAB nTab, S
if (aAbs.Tab() == nTab && nCol1 <= aAbs.Col() && aAbs.Col() <= nCol2)
{
// Inside reordered column range.
- sc::RowReorderMapType::const_iterator it = rRowMap.find(aAbs.Row());
+ sc::ColRowReorderMapType::const_iterator it = rRowMap.find(aAbs.Row());
if (it != rRowMap.end())
{
// This column is reordered.
@@ -2991,7 +2991,7 @@ void ScTokenArray::MoveReferenceRowReorder( const ScAddress& rPos, SCTAB nTab, S
if (aAbs.aStart.Tab() == nTab && nCol1 <= aAbs.aStart.Col() && aAbs.aEnd.Col() <= nCol2)
{
// Inside reordered column range.
- sc::RowReorderMapType::const_iterator it = rRowMap.find(aAbs.aStart.Row());
+ sc::ColRowReorderMapType::const_iterator it = rRowMap.find(aAbs.aStart.Row());
if (it != rRowMap.end())
{
// This row is reordered.
commit d736cf6c5655cdf722c6ac57fca0d41f45a70c39
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Fri Jun 27 14:03:18 2014 -0400
Dis-ambiguate these two MoveReference(...) methods.
Change-Id: I08503b1e8ec20c3a236d4ee823efae84a4be54a1
diff --git a/sc/inc/tokenarray.hxx b/sc/inc/tokenarray.hxx
index 082f152..375dd3a 100644
--- a/sc/inc/tokenarray.hxx
+++ b/sc/inc/tokenarray.hxx
@@ -168,9 +168,9 @@ public:
* @param nRow2 bottom row of reordered range.
* @param rColMap old-to-new column mapping.
*/
- void MoveReference( const ScAddress& rPos, SCTAB nTab, SCROW nRow1, SCROW nRow2, const sc::ColReorderMapType& rColMap );
+ void MoveReferenceColReorder( const ScAddress& rPos, SCTAB nTab, SCROW nRow1, SCROW nRow2, const sc::ColReorderMapType& rColMap );
- void MoveReference( const ScAddress& rPos, SCTAB nTab, SCCOL nCol1, SCCOL nCol2, const sc::RowReorderMapType& rRowMap );
+ void MoveReferenceRowReorder( const ScAddress& rPos, SCTAB nTab, SCCOL nCol1, SCCOL nCol2, const sc::RowReorderMapType& rRowMap );
/**
* Adjust all references in named expression. In named expression, we only
diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx
index 0285630..60d9866 100644
--- a/sc/source/core/data/formulacell.cxx
+++ b/sc/source/core/data/formulacell.cxx
@@ -1944,8 +1944,11 @@ void ScFormulaCell::Notify( const SfxHint& rHint )
const sc::RefColReorderHint& rRefColReorder =
static_cast<const sc::RefColReorderHint&>(rRefHint);
if (!IsShared() || IsSharedTop())
- pCode->MoveReference(
- aPos, rRefColReorder.getTab(), rRefColReorder.getStartRow(), rRefColReorder.getEndRow(), rRefColReorder.getColMap());
+ pCode->MoveReferenceColReorder(
+ aPos, rRefColReorder.getTab(),
+ rRefColReorder.getStartRow(),
+ rRefColReorder.getEndRow(),
+ rRefColReorder.getColMap());
}
break;
case sc::RefHint::RowReordered:
@@ -1953,7 +1956,7 @@ void ScFormulaCell::Notify( const SfxHint& rHint )
const sc::RefRowReorderHint& rRefRowReorder =
static_cast<const sc::RefRowReorderHint&>(rRefHint);
if (!IsShared() || IsSharedTop())
- pCode->MoveReference(
+ pCode->MoveReferenceRowReorder(
aPos, rRefRowReorder.getTab(),
rRefRowReorder.getStartColumn(),
rRefRowReorder.getEndColumn(),
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index cf406a0..fcf76a2 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -2882,7 +2882,7 @@ void ScTokenArray::MoveReference(
}
}
-void ScTokenArray::MoveReference(
+void ScTokenArray::MoveReferenceColReorder(
const ScAddress& rPos, SCTAB nTab, SCROW nRow1, SCROW nRow2, const sc::ColReorderMapType& rColMap )
{
FormulaToken** p = pCode;
@@ -2946,7 +2946,7 @@ void ScTokenArray::MoveReference(
}
}
-void ScTokenArray::MoveReference( const ScAddress& rPos, SCTAB nTab, SCCOL nCol1, SCCOL nCol2, const sc::RowReorderMapType& rRowMap )
+void ScTokenArray::MoveReferenceRowReorder( const ScAddress& rPos, SCTAB nTab, SCCOL nCol1, SCCOL nCol2, const sc::RowReorderMapType& rRowMap )
{
FormulaToken** p = pCode;
FormulaToken** pEnd = p + static_cast<size_t>(nLen);
More information about the Libreoffice-commits
mailing list