Kaydet (Commit) 65dedbd9 authored tarafından Markus Mohrhard's avatar Markus Mohrhard

store external range names in the cache, td#88179

Change-Id: I00b41f9b1fc2aec6f66c613cc02328b2968dca8d
üst 04a7df73
...@@ -234,6 +234,7 @@ public: ...@@ -234,6 +234,7 @@ public:
ScExternalRefCache::TokenArrayRef getRangeNameTokens(sal_uInt16 nFileId, const OUString& rName); ScExternalRefCache::TokenArrayRef getRangeNameTokens(sal_uInt16 nFileId, const OUString& rName);
void setRangeNameTokens(sal_uInt16 nFileId, const OUString& rName, TokenArrayRef pArray); void setRangeNameTokens(sal_uInt16 nFileId, const OUString& rName, TokenArrayRef pArray);
bool isValidRangeName(sal_uInt16 nFileId, const OUString& rName) const; bool isValidRangeName(sal_uInt16 nFileId, const OUString& rName) const;
void setRangeName(sal_uInt16 nFileId, const OUString& rName);
void setCellData(sal_uInt16 nFileId, const OUString& rTabName, void setCellData(sal_uInt16 nFileId, const OUString& rTabName,
SCCOL nCol, SCROW nRow, TokenRef pToken, sal_uLong nFmtIndex); SCCOL nCol, SCROW nRow, TokenRef pToken, sal_uLong nFmtIndex);
......
...@@ -714,6 +714,18 @@ bool ScExternalRefCache::isValidRangeName(sal_uInt16 nFileId, const OUString& rN ...@@ -714,6 +714,18 @@ bool ScExternalRefCache::isValidRangeName(sal_uInt16 nFileId, const OUString& rN
return rMap.count(rName) > 0; return rMap.count(rName) > 0;
} }
void ScExternalRefCache::setRangeName(sal_uInt16 nFileId, const OUString& rName)
{
osl::MutexGuard aGuard(&maMtxDocs);
DocItem* pDoc = getDocItem(nFileId);
if (!pDoc)
return;
OUString aUpperName = ScGlobal::pCharClass->uppercase(rName);
pDoc->maRealRangeNameMap.insert(NamePairMap::value_type(aUpperName, rName));
}
void ScExternalRefCache::setCellData(sal_uInt16 nFileId, const OUString& rTabName, SCCOL nCol, SCROW nRow, void ScExternalRefCache::setCellData(sal_uInt16 nFileId, const OUString& rTabName, SCCOL nCol, SCROW nRow,
TokenRef pToken, sal_uLong nFmtIndex) TokenRef pToken, sal_uLong nFmtIndex)
{ {
...@@ -1999,7 +2011,12 @@ bool ScExternalRefManager::isValidRangeName(sal_uInt16 nFileId, const OUString& ...@@ -1999,7 +2011,12 @@ bool ScExternalRefManager::isValidRangeName(sal_uInt16 nFileId, const OUString&
if (pSrcDoc) if (pSrcDoc)
{ {
// Only check the presence of the name. // Only check the presence of the name.
return hasRangeName(*pSrcDoc, rName); if (hasRangeName(*pSrcDoc, rName))
{
maRefCache.setRangeName(nFileId, rName);
return true;
}
return false;
} }
if (maRefCache.isValidRangeName(nFileId, rName)) if (maRefCache.isValidRangeName(nFileId, rName))
...@@ -2011,7 +2028,13 @@ bool ScExternalRefManager::isValidRangeName(sal_uInt16 nFileId, const OUString& ...@@ -2011,7 +2028,13 @@ bool ScExternalRefManager::isValidRangeName(sal_uInt16 nFileId, const OUString&
// failed to load document from disk. // failed to load document from disk.
return false; return false;
return hasRangeName(*pSrcDoc, rName); if (hasRangeName(*pSrcDoc, rName))
{
maRefCache.setRangeName(nFileId, rName);
return true;
}
return false;
} }
void ScExternalRefManager::refreshAllRefCells(sal_uInt16 nFileId) void ScExternalRefManager::refreshAllRefCells(sal_uInt16 nFileId)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment