summaryrefslogtreecommitdiff
path: root/sc/source
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2011-11-23 03:41:26 +0100
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2011-11-23 06:25:36 +0100
commit9e8ae1d56076474e4673a953d8ebd726cb5daa18 (patch)
tree9fa98ed589c4484bfc2b72a520e7f195f561c0f2 /sc/source
parentf3c7c1e4ceddc6f778de89c1e75dbb126247c787 (diff)
remove ScRangeName::findByName
this method was mmisused and is the source for some "bugs" we don't allow case sensitive storage of range names and therefore it does not amke sense to search by case sensitive names, use ScRangeName::findByUpperName instead Especially the uno implementation did behave wrongly and allowed to create two names that were identicall for the model
Diffstat (limited to 'sc/source')
-rw-r--r--sc/source/core/data/documen2.cxx2
-rw-r--r--sc/source/core/data/document.cxx2
-rw-r--r--sc/source/core/tool/rangenam.cxx25
-rw-r--r--sc/source/core/tool/rangeutl.cxx9
-rw-r--r--sc/source/filter/html/htmlimp.cxx4
-rw-r--r--sc/source/filter/rtf/eeimpars.cxx2
-rw-r--r--sc/source/ui/app/inputwin.cxx2
-rw-r--r--sc/source/ui/docshell/arealink.cxx2
-rw-r--r--sc/source/ui/docshell/docfunc.cxx6
-rw-r--r--sc/source/ui/docshell/docsh4.cxx2
-rw-r--r--sc/source/ui/docshell/impex.cxx2
-rw-r--r--sc/source/ui/docshell/servobj.cxx2
-rw-r--r--sc/source/ui/namedlg/namedlg.cxx2
-rw-r--r--sc/source/ui/navipi/content.cxx4
-rw-r--r--sc/source/ui/unoobj/nameuno.cxx10
-rw-r--r--sc/source/ui/vba/vbarange.cxx2
-rw-r--r--sc/source/ui/view/viewfunc.cxx2
17 files changed, 28 insertions, 52 deletions
diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx
index 5798f4d0b98d..94754e7c2f7d 100644
--- a/sc/source/core/data/documen2.cxx
+++ b/sc/source/core/data/documen2.cxx
@@ -996,7 +996,7 @@ sal_uLong ScDocument::TransferTab( ScDocument* pSrcDoc, SCTAB nSrcPos,
bool bInUse = ( aUsedNames.find(nOldIndex) != aUsedNames.end() );
if (bInUse)
{
- const ScRangeData* pExistingData = GetRangeName()->findByName(itr->GetName());
+ const ScRangeData* pExistingData = GetRangeName()->findByUpperName(itr->GetUpperName());
if (pExistingData)
{
// the name exists already in the destination document
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index de225f46ba7c..5a50aef4ac52 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -2121,7 +2121,7 @@ void ScDocument::CopyRangeNamesFromClip(ScDocument* pClipDoc, ScClipRangeNameDat
A proper solution would ask the user how to proceed.
The adjustment of the indices in the formulas is done later.
*/
- const ScRangeData* pExistingData = GetRangeName()->findByName(itr->GetName());
+ const ScRangeData* pExistingData = GetRangeName()->findByUpperName(itr->GetUpperName());
if (pExistingData)
{
sal_uInt16 nOldIndex = itr->GetIndex();
diff --git a/sc/source/core/tool/rangenam.cxx b/sc/source/core/tool/rangenam.cxx
index 69849842d134..1d2d99c8b6e2 100644
--- a/sc/source/core/tool/rangenam.cxx
+++ b/sc/source/core/tool/rangenam.cxx
@@ -735,17 +735,6 @@ public:
}
};
-class MatchByName : public unary_function<ScRangeData, bool>
-{
- const OUString& mrName;
-public:
- MatchByName(const OUString& rName) : mrName(rName) {}
- bool operator() (const ScRangeData& r) const
- {
- return mrName.equals(r.GetName());
- }
-};
-
class MatchByUpperName : public unary_function<ScRangeData, bool>
{
const OUString& mrName;
@@ -813,20 +802,6 @@ const ScRangeData* ScRangeName::findByRange(const ScRange& rRange) const
return itr == maData.end() ? NULL : &(*itr);
}
-ScRangeData* ScRangeName::findByName(const OUString& rName)
-{
- DataType::iterator itr = std::find_if(
- maData.begin(), maData.end(), MatchByName(rName));
- return itr == maData.end() ? NULL : &(*itr);
-}
-
-const ScRangeData* ScRangeName::findByName(const OUString& rName) const
-{
- DataType::const_iterator itr = std::find_if(
- maData.begin(), maData.end(), MatchByName(rName));
- return itr == maData.end() ? NULL : &(*itr);
-}
-
ScRangeData* ScRangeName::findByUpperName(const OUString& rName)
{
DataType::iterator itr = std::find_if(
diff --git a/sc/source/core/tool/rangeutl.cxx b/sc/source/core/tool/rangeutl.cxx
index 2ced67b341b2..ab9ebcf905d3 100644
--- a/sc/source/core/tool/rangeutl.cxx
+++ b/sc/source/core/tool/rangeutl.cxx
@@ -307,9 +307,9 @@ sal_Bool ScRangeUtil::MakeRangeFromName (
ScRangeName* pRangeNames = pDoc->GetRangeName( nTable );
ScRangeData* pData = NULL;
if ( pRangeNames )
- pData = pRangeNames->findByName(aName);
+ pData = pRangeNames->findByUpperName(ScGlobal::pCharClass->upper(aName));
if (!pData)
- pData = pDoc->GetRangeName()->findByName(aName);
+ pData = pDoc->GetRangeName()->findByUpperName(ScGlobal::pCharClass->upper(aName));
if (pData)
{
String aStrArea;
@@ -1021,16 +1021,17 @@ ScRangeData* ScRangeStringConverter::GetRangeDataFromString(const rtl::OUString&
{
ScRangeName* pLocalRangeName = pDoc->GetRangeName(nTab);
ScRangeData* pData = NULL;
+ rtl::OUString aUpperName = ScGlobal::pCharClass->upper(rString);
if(pLocalRangeName)
{
- pData = pLocalRangeName->findByName(rString);
+ pData = pLocalRangeName->findByUpperName(aUpperName);
}
if (!pData)
{
ScRangeName* pGlobalRangeName = pDoc->GetRangeName();
if (pGlobalRangeName)
{
- pData = pGlobalRangeName->findByName(rString);
+ pData = pGlobalRangeName->findByUpperName(aUpperName);
}
}
return pData;
diff --git a/sc/source/filter/html/htmlimp.cxx b/sc/source/filter/html/htmlimp.cxx
index 52eb9de3528d..86ed840696ad 100644
--- a/sc/source/filter/html/htmlimp.cxx
+++ b/sc/source/filter/html/htmlimp.cxx
@@ -208,7 +208,7 @@ void ScHTMLImport::WriteToDocument(
if (!pTable->GetTableName().isEmpty())
{
String aName( ScfTools::GetNameFromHTMLName( pTable->GetTableName() ) );
- if (!mpDoc->GetRangeName()->findByName(aName))
+ if (!mpDoc->GetRangeName()->findByUpperName(ScGlobal::pCharClass->upper(aName)))
InsertRangeName( mpDoc, aName, aNewRange );
}
}
@@ -238,7 +238,7 @@ String ScHTMLImport::GetHTMLRangeNameList( ScDocument* pDoc, const String& rOrig
while( bLoop )
{
aToken = ScfTools::GetNameFromHTMLIndex( nIndex++ );
- const ScRangeData* pRangeData = pRangeNames->findByName(aToken);
+ const ScRangeData* pRangeData = pRangeNames->findByUpperName(ScGlobal::pCharClass->upper(aToken));
if (pRangeData)
{
ScRange aRange;
diff --git a/sc/source/filter/rtf/eeimpars.cxx b/sc/source/filter/rtf/eeimpars.cxx
index e849138e8452..983e88c44abb 100644
--- a/sc/source/filter/rtf/eeimpars.cxx
+++ b/sc/source/filter/rtf/eeimpars.cxx
@@ -420,7 +420,7 @@ void ScEEImport::WriteToDocument( sal_Bool bSizeColsRows, double nOutputFactor,
bHasGraphics |= GraphicSize( nCol, nRow, nTab, pE );
if ( pE->pName )
{ // Anchor Name => RangeName
- if (!pRangeNames->findByName(*pE->pName))
+ if (!pRangeNames->findByUpperName(ScGlobal::pCharClass->upper(*pE->pName)))
{
ScRangeData* pData = new ScRangeData( mpDoc, *pE->pName,
ScAddress( nCol, nRow, nTab ) );
diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx
index 5782611fd9c7..82d9253f56d4 100644
--- a/sc/source/ui/app/inputwin.cxx
+++ b/sc/source/ui/app/inputwin.cxx
@@ -2240,7 +2240,7 @@ void ScPosWnd::DoEnter()
{
ScRangeName* pNames = pDoc->GetRangeName();
ScRange aSelection;
- if ( pNames && !pNames->findByName(aText) &&
+ if ( pNames && !pNames->findByUpperName(ScGlobal::pCharClass->upper(aText)) &&
(pViewData->GetSimpleArea( aSelection ) == SC_MARK_SIMPLE) )
{
ScRangeName aNewRanges( *pNames );
diff --git a/sc/source/ui/docshell/arealink.cxx b/sc/source/ui/docshell/arealink.cxx
index 1fe0b9887c69..df2f9b646788 100644
--- a/sc/source/ui/docshell/arealink.cxx
+++ b/sc/source/ui/docshell/arealink.cxx
@@ -216,7 +216,7 @@ bool ScAreaLink::FindExtRange( ScRange& rRange, ScDocument* pSrcDoc, const Strin
ScRangeName* pNames = pSrcDoc->GetRangeName();
if (pNames) // benannte Bereiche
{
- const ScRangeData* p = pNames->findByName(rAreaName);
+ const ScRangeData* p = pNames->findByUpperName(ScGlobal::pCharClass->upper(rAreaName));
if (p && p->IsValidReference(rRange))
bFound = true;
}
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index 739b973861c3..0d8a406d9466 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -4575,7 +4575,7 @@ void ScDocFunc::CreateOneName( ScRangeName& rList,
ScRange( nX1, nY1, nTab, nX2, nY2, nTab ).Format( aContent, SCR_ABS_3D, pDoc );
bool bInsert = false;
- ScRangeData* pOld = rList.findByName(aName);
+ ScRangeData* pOld = rList.findByUpperName(ScGlobal::pCharClass->upper(aName));
if (pOld)
{
String aOldStr;
@@ -4738,7 +4738,7 @@ sal_Bool ScDocFunc::InsertNameList( const ScAddress& rStartPos, sal_Bool bApi )
for (ScRangeName::iterator itr = itrBeg; itr != itrEnd; ++itr)
{
const ScRangeData& r = *itr;
- if (!r.HasType(RT_DATABASE) && !r.HasType(RT_SHARED) && !pLocalList->findByName(r.GetName()))
+ if (!r.HasType(RT_DATABASE) && !r.HasType(RT_SHARED) && !pLocalList->findByUpperName(r.GetUpperName()))
++nValidCount;
}
@@ -4773,7 +4773,7 @@ sal_Bool ScDocFunc::InsertNameList( const ScAddress& rStartPos, sal_Bool bApi )
for (ScRangeName::iterator itr = itrBeg; itr != itrEnd; ++itr)
{
ScRangeData& r = *itr;
- if (!r.HasType(RT_DATABASE) && !r.HasType(RT_SHARED) && !pLocalList->findByName(r.GetName()))
+ if (!r.HasType(RT_DATABASE) && !r.HasType(RT_SHARED) && !pLocalList->findByUpperName(r.GetUpperName()))
ppSortArray[j++] = &r;
}
#ifndef ICC
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 8bd4782ad69e..9f6186a7c909 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -2107,7 +2107,7 @@ long ScDocShell::DdeSetData( const String& rItem,
ScRangeName* pRange = aDocument.GetRangeName();
if( pRange )
{
- const ScRangeData* pData = pRange->findByName(aPos);
+ const ScRangeData* pData = pRange->findByUpperName(ScGlobal::pCharClass->upper(aPos));
if (pData)
{
if( pData->HasType( RT_REFAREA )
diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx
index 712f696b4f30..a10affc84d5b 100644
--- a/sc/source/ui/docshell/impex.cxx
+++ b/sc/source/ui/docshell/impex.cxx
@@ -173,7 +173,7 @@ ScImportExport::ScImportExport( ScDocument* p, const String& rPos )
ScRangeName* pRange = pDoc->GetRangeName();
if( pRange )
{
- const ScRangeData* pData = pRange->findByName(aPos);
+ const ScRangeData* pData = pRange->findByUpperName(ScGlobal::pCharClass->upper(aPos));
if (pData)
{
if( pData->HasType( RT_REFAREA )
diff --git a/sc/source/ui/docshell/servobj.cxx b/sc/source/ui/docshell/servobj.cxx
index d5422549fd32..90c497ea6688 100644
--- a/sc/source/ui/docshell/servobj.cxx
+++ b/sc/source/ui/docshell/servobj.cxx
@@ -54,7 +54,7 @@ sal_Bool lcl_FillRangeFromName( ScRange& rRange, ScDocShell* pDocSh, const Strin
ScRangeName* pNames = pDoc->GetRangeName();
if (pNames)
{
- const ScRangeData* pData = pNames->findByName(rName);
+ const ScRangeData* pData = pNames->findByUpperName(ScGlobal::pCharClass->upper(rName));
if (pData)
{
if ( pData->IsValidReference( rRange ) )
diff --git a/sc/source/ui/namedlg/namedlg.cxx b/sc/source/ui/namedlg/namedlg.cxx
index 202eb82bf20b..ef567e57cdf5 100644
--- a/sc/source/ui/namedlg/namedlg.cxx
+++ b/sc/source/ui/namedlg/namedlg.cxx
@@ -317,7 +317,7 @@ void ScNameDlg::CalcCurTableAssign( String& aAssign, ScRangeData* pRangeData )
void ScNameDlg::ShowOptions(const ScRangeNameLine& rLine)
{
ScRangeName* pRangeName = GetRangeName(rLine.aScope);
- ScRangeData* pData = pRangeName->findByName(rLine.aName);
+ ScRangeData* pData = pRangeName->findByUpperName(ScGlobal::pCharClass->upper(rLine.aName));
if (pData)
{
UpdateChecks(pData);
diff --git a/sc/source/ui/navipi/content.cxx b/sc/source/ui/navipi/content.cxx
index bd32d1c50d57..bc9280a39fe0 100644
--- a/sc/source/ui/navipi/content.cxx
+++ b/sc/source/ui/navipi/content.cxx
@@ -1017,7 +1017,7 @@ bool lcl_GetRange( ScDocument* pDoc, sal_uInt16 nType, const String& rName, ScRa
ScRangeName* pList = pDoc->GetRangeName();
if (pList)
{
- const ScRangeData* p = pList->findByName(rName);
+ const ScRangeData* p = pList->findByUpperName(ScGlobal::pCharClass->upper(rName));
if (p && p->IsValidReference(rRange))
bFound = true;
}
@@ -1027,7 +1027,7 @@ bool lcl_GetRange( ScDocument* pDoc, sal_uInt16 nType, const String& rName, ScRa
ScDBCollection* pList = pDoc->GetDBCollection();
if (pList)
{
- const ScDBData* p = pList->getNamedDBs().findByName(rName);
+ const ScDBData* p = pList->getNamedDBs().findByUpperName(ScGlobal::pCharClass->upper(rName));
if (p)
{
SCTAB nTab;
diff --git a/sc/source/ui/unoobj/nameuno.cxx b/sc/source/ui/unoobj/nameuno.cxx
index ab23b19e511e..3210c8143978 100644
--- a/sc/source/ui/unoobj/nameuno.cxx
+++ b/sc/source/ui/unoobj/nameuno.cxx
@@ -137,7 +137,7 @@ ScRangeData* ScNamedRangeObj::GetRangeData_Impl()
pNames = pDocShell->GetDocument()->GetRangeName();
if (pNames)
{
- pRet = pNames->findByName(aName);
+ pRet = pNames->findByUpperName(ScGlobal::pCharClass->upper(aName));
if (pRet)
pRet->ValidateTabRefs(); // adjust relative tab refs to valid tables
}
@@ -180,7 +180,7 @@ void ScNamedRangeObj::Modify_Impl( const String* pNewName, const ScTokenArray* p
if (!pNames)
return;
- const ScRangeData* pOld = pNames->findByName(aName);
+ const ScRangeData* pOld = pNames->findByUpperName(ScGlobal::pCharClass->upper(aName));
if (!pOld)
return;
@@ -556,7 +556,7 @@ void SAL_CALL ScNamedRangesObj::addNewByName( const rtl::OUString& aName,
{
ScDocument* pDoc = pDocShell->GetDocument();
ScRangeName* pNames = GetRangeName_Impl();
- if (pNames && !pNames->findByName(aName))
+ if (pNames && !pNames->findByUpperName(ScGlobal::pCharClass->upper(aName)))
{
ScRangeName* pNewRanges = new ScRangeName( *pNames );
// GRAM_PODF_A1 for API compatibility.
@@ -617,7 +617,7 @@ void SAL_CALL ScNamedRangesObj::removeByName( const rtl::OUString& aName )
ScRangeName* pNames = GetRangeName_Impl();
if (pNames)
{
- const ScRangeData* pData = pNames->findByName(aName);
+ const ScRangeData* pData = pNames->findByUpperName(ScGlobal::pCharClass->upper(aName));
if (pData && lcl_UserVisibleName(*pData))
{
ScRangeName* pNewRanges = new ScRangeName(*pNames);
@@ -779,7 +779,7 @@ sal_Bool SAL_CALL ScNamedRangesObj::hasByName( const rtl::OUString& aName )
ScRangeName* pNames = GetRangeName_Impl();
if (pNames)
{
- const ScRangeData* pData = pNames->findByName(aName);
+ const ScRangeData* pData = pNames->findByUpperName(ScGlobal::pCharClass->upper(aName));
if (pData && lcl_UserVisibleName(*pData))
return sal_True;
}
diff --git a/sc/source/ui/vba/vbarange.cxx b/sc/source/ui/vba/vbarange.cxx
index 58518266c1f1..35df42ab5f77 100644
--- a/sc/source/ui/vba/vbarange.cxx
+++ b/sc/source/ui/vba/vbarange.cxx
@@ -1184,7 +1184,7 @@ bool getScRangeListForAddress( const rtl::OUString& sName, ScDocShell* pDocSh, S
ScRangeName* pRangeName = pDoc->GetRangeName(nCurTab);
if (pRangeName)
{
- bLocalName = pRangeName->findByName(sAddress) != NULL;
+ bLocalName = pRangeName->findByUpperName(ScGlobal::pCharClass->upper(sAddress)) != NULL;
// TODO: Handle local names correctly.
(void)bLocalName;
}
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index cb767b79a505..9cc13af17444 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -2928,7 +2928,7 @@ sal_Bool ScViewFunc::InsertName( const String& rName, const String& rSymbol,
pDoc->CompileNameFormula( sal_True ); // CreateFormulaString
// input available yet? Then remove beforehand (=change)
- ScRangeData* pData = pList->findByName(rName);
+ ScRangeData* pData = pList->findByUpperName(ScGlobal::pCharClass->upper(rName));
if (pData)
{ // take old Index
pNewEntry->SetIndex(pData->GetIndex());