[Libreoffice-commits] core.git: sc/inc sc/qa sc/source

Eike Rathke erack at redhat.com
Wed Feb 22 17:51:49 UTC 2017


 sc/inc/document.hxx              |    7 +++++++
 sc/qa/unit/ucalc.cxx             |    4 ++--
 sc/source/core/data/documen2.cxx |   11 +++++++++--
 3 files changed, 18 insertions(+), 4 deletions(-)

New commits:
commit 65553180cfe80a1b2d551c8063a5bc03b427d138
Author: Eike Rathke <erack at redhat.com>
Date:   Wed Feb 22 18:50:34 2017 +0100

    less ugly ClosingClipboardSource()
    
    Change-Id: Ie53837e4dd5f779255eac25e090b23e49c3786ce

diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index e93e882..a18b2ea 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -1479,6 +1479,13 @@ public:
     ScClipParam&    GetClipParam();
     void            SetClipParam(const ScClipParam& rParam);
 
+    /** To be called at the clipboard document when closing a document that is
+        the current clipboard source to decouple things from the originating
+        document. Done in ScDocument dtor after determining
+        IsClipboardSource().
+     */
+    void            ClosingClipboardSource();
+
     void            MixDocument( const ScRange& rRange, ScPasteFunc nFunction, bool bSkipEmpty,
                                     ScDocument* pSrcDoc );
 
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index f2a0196..c715c5e 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -5365,8 +5365,8 @@ void Test::testNoteLifeCycle()
         // There's no ScTransferObject involved in the "fake" clipboard copy
         // and ScDocument dtor asking IsClipboardSource() gets no, so emulate
         // the part that normally is reponsible for forgetting the caption
-        // objects. Ugly.
-        aClipDoc2.ForgetNoteCaptions( ScRangeList( ScRange( 0,0,0, MAXCOL, MAXROW, aClipDoc2.GetTableCount()-1)), true);
+        // objects.
+        aClipDoc2.ClosingClipboardSource();
 
         pDoc2->DeleteTab(0);
         closeDocShell(xDocSh2);
diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx
index 525c299..a2365bb 100644
--- a/sc/source/core/data/documen2.cxx
+++ b/sc/source/core/data/documen2.cxx
@@ -359,6 +359,14 @@ void ScDocument::StartTrackTimer()
         aTrackIdle.Start();
 }
 
+void ScDocument::ClosingClipboardSource()
+{
+    if (!bIsClip)
+        return;
+
+    ForgetNoteCaptions( ScRangeList( ScRange( 0,0,0, MAXCOL, MAXROW, GetTableCount()-1)), true);
+}
+
 ScDocument::~ScDocument()
 {
     OSL_PRECOND( !bInLinkUpdate, "bInLinkUpdate in dtor" );
@@ -383,8 +391,7 @@ ScDocument::~ScDocument()
         // attempt to access non-existing data. Preserve the text data though.
         ScDocument* pClipDoc = ScModule::GetClipDoc();
         if (pClipDoc)
-            pClipDoc->ForgetNoteCaptions(
-                    ScRangeList( ScRange( 0,0,0, MAXCOL, MAXROW, pClipDoc->GetTableCount()-1)), true);
+            pClipDoc->ClosingClipboardSource();
     }
 
     mxFormulaParserPool.reset();


More information about the Libreoffice-commits mailing list