diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2011-06-15 23:04:51 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2011-06-15 23:04:51 +0200 |
commit | 1b363f632110e80ead67ff376e92e4487556ca55 (patch) | |
tree | 688e71242bbb22aaf83949ca842eac7400f66972 /sc/source/ui/docshell/docfunc.cxx | |
parent | fc067a78706abc237ce20cab670406a7790ec37e (diff) |
add local range names to ScNamePasteDlg
Diffstat (limited to 'sc/source/ui/docshell/docfunc.cxx')
-rw-r--r-- | sc/source/ui/docshell/docfunc.cxx | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx index ffe7fcd539c4..40615a7447f7 100644 --- a/sc/source/ui/docshell/docfunc.cxx +++ b/sc/source/ui/docshell/docfunc.cxx @@ -4708,20 +4708,28 @@ sal_Bool ScDocFunc::InsertNameList( const ScAddress& rStartPos, sal_Bool bApi ) { ScDocShellModificator aModificator( rDocShell ); - sal_Bool bDone = false; ScDocument* pDoc = rDocShell.GetDocument(); - const sal_Bool bRecord = pDoc->IsUndoEnabled(); + const bool bRecord = pDoc->IsUndoEnabled(); SCTAB nTab = rStartPos.Tab(); ScDocument* pUndoDoc = NULL; - ScRangeName* pList = pDoc->GetRangeName(); + //local names have higher priority than global names + ScRangeName* pLocalList = pDoc->GetRangeName(nTab); sal_uInt16 nValidCount = 0; + ScRangeName::iterator itrLocalBeg = pLocalList->begin(), itrLocalEnd = pLocalList->end(); + for (ScRangeName::iterator itr = itrLocalBeg; itr != itrLocalEnd; ++itr) + { + const ScRangeData& r = *itr; + if (!r.HasType(RT_DATABASE) && !r.HasType(RT_SHARED)) + ++nValidCount; + } + ScRangeName* pList = pDoc->GetRangeName(); ScRangeName::iterator itrBeg = pList->begin(), itrEnd = pList->end(); for (ScRangeName::iterator itr = itrBeg; itr != itrEnd; ++itr) { const ScRangeData& r = *itr; - if (!r.HasType(RT_DATABASE) && !r.HasType(RT_SHARED)) + if (!r.HasType(RT_DATABASE) && !r.HasType(RT_SHARED) && !pLocalList->findByName(r.GetName())) ++nValidCount; } @@ -4747,12 +4755,18 @@ sal_Bool ScDocFunc::InsertNameList( const ScAddress& rStartPos, sal_Bool bApi ) ScRangeData** ppSortArray = new ScRangeData* [ nValidCount ]; sal_uInt16 j = 0; - for (ScRangeName::iterator itr = itrBeg; itr != itrEnd; ++itr) + for (ScRangeName::iterator itr = itrLocalBeg; itr != itrLocalEnd; ++itr) { ScRangeData& r = *itr; if (!r.HasType(RT_DATABASE) && !r.HasType(RT_SHARED)) ppSortArray[j++] = &r; } + for (ScRangeName::iterator itr = itrBeg; itr != itrEnd; ++itr) + { + ScRangeData& r = *itr; + if (!r.HasType(RT_DATABASE) && !r.HasType(RT_SHARED) && !pLocalList->findByName(r.GetName())) + ppSortArray[j++] = &r; + } #ifndef ICC qsort( (void*)ppSortArray, nValidCount, sizeof(ScRangeData*), &ScRangeData_QsortNameCompare ); |