[Libreoffice-commits] .: Branch 'libreoffice-3-4' - sc/source

Kohei Yoshida kohei at kemper.freedesktop.org
Thu May 5 22:59:38 PDT 2011


 sc/source/ui/docshell/externalrefmgr.cxx |   25 ++++++++++++-------------
 1 file changed, 12 insertions(+), 13 deletions(-)

New commits:
commit 67d7f2e028566c39cf296fae5ef91d4fe0d3c26d
Author: Kohei Yoshida <kyoshida at novell.com>
Date:   Fri May 6 01:50:02 2011 -0400

    Remove range names with external references regardless of cells.
    
    Sometimes range names may contain external references but no sheet
    cells reference that range names.  Even then, breaking the link
    should remove those range names.

diff --git a/sc/source/ui/docshell/externalrefmgr.cxx b/sc/source/ui/docshell/externalrefmgr.cxx
index d1cc636..1bfdc8b 100644
--- a/sc/source/ui/docshell/externalrefmgr.cxx
+++ b/sc/source/ui/docshell/externalrefmgr.cxx
@@ -2442,23 +2442,22 @@ void ScExternalRefManager::breakLink(sal_uInt16 nFileId)
         // the original container.
         RefCellSet aSet = itrRefs->second;
         for_each(aSet.begin(), aSet.end(), ConvertFormulaToStatic(mpDoc));
+        maRefCells.erase(nFileId);
+    }
+
+    // Remove all named ranges that reference this document.
 
-        // Remove all named ranges that reference this document.
+    // Global named ranges.
+    ScRangeName* pRanges = mpDoc->GetRangeName();
+    if (pRanges)
+        removeRangeNamesBySrcDoc(*pRanges, nFileId);
 
-        // Global named ranges.
-        ScRangeName* pRanges = mpDoc->GetRangeName();
+    // Sheet-local named ranges.
+    for (SCTAB i = 0, n = mpDoc->GetTableCount(); i < n; ++i)
+    {
+        pRanges = mpDoc->GetRangeName(i);
         if (pRanges)
             removeRangeNamesBySrcDoc(*pRanges, nFileId);
-
-        // Sheet-local named ranges.
-        for (SCTAB i = 0, n = mpDoc->GetTableCount(); i < n; ++i)
-        {
-            pRanges = mpDoc->GetRangeName(i);
-            if (pRanges)
-                removeRangeNamesBySrcDoc(*pRanges, nFileId);
-        }
-
-        maRefCells.erase(nFileId);
     }
 
     lcl_removeByFileId(nFileId, maDocShells);


More information about the Libreoffice-commits mailing list