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 <[email protected]> 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(); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
