diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2019-07-09 18:44:42 +1000 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2019-08-22 12:19:47 +0200 |
commit | 28c992588e690299451275fe02272bcd09bd4bc0 (patch) | |
tree | d6d15cf22c0e7afdd8424994c0f633a453e55bda /sc | |
parent | a49c86b4cbf52eecd43ed236cae9028476424eff (diff) |
Postpone filter detection until link update is allowed
Change-Id: I85b2185e550f2a133ceb485241ef513b40593e34
Reviewed-on: https://gerrit.libreoffice.org/75301
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit 03c708bf085f91480c014d7fa31e7a317b2c7b8f)
Reviewed-on: https://gerrit.libreoffice.org/76303
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
(cherry picked from commit 43bf332aeede732557378e81765f29b704b17188)
(cherry picked from commit 73176974d613b01bdf5223b93cf2705d3fd8c155)
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/docshell/externalrefmgr.cxx | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/sc/source/ui/docshell/externalrefmgr.cxx b/sc/source/ui/docshell/externalrefmgr.cxx index af1a27e5043f..ba4466386f47 100644 --- a/sc/source/ui/docshell/externalrefmgr.cxx +++ b/sc/source/ui/docshell/externalrefmgr.cxx @@ -2172,6 +2172,15 @@ void insertRefCellByIterator( } } +bool IsLinkUpdateAllowedInDoc(const ScDocument& rDoc) +{ + SfxObjectShell* pDocShell = rDoc.GetDocumentShell(); + if (!pDocShell) + return false; + + return pDocShell->GetEmbeddedObjectContainer().getUserAllowsLinkUpdate(); +} + } void ScExternalRefManager::insertRefCell(sal_uInt16 nFileId, const ScAddress& rCell) @@ -2382,13 +2391,8 @@ ScDocument* ScExternalRefManager::getInMemorySrcDocument(sal_uInt16 nFileId) return nullptr; // Do not load document until it was allowed - SfxObjectShell* pDocShell = mpDoc->GetDocumentShell(); - if ( pDocShell ) - { - const comphelper::EmbeddedObjectContainer& rContainer = pDocShell->GetEmbeddedObjectContainer(); - if ( !rContainer.getUserAllowsLinkUpdate() ) - return nullptr; - } + if (!IsLinkUpdateAllowedInDoc(*mpDoc)) + return nullptr; ScDocument* pSrcDoc = nullptr; ScDocShell* pShell = static_cast<ScDocShell*>(SfxObjectShell::GetFirst(checkSfxObjectShell<ScDocShell>, false)); @@ -2633,6 +2637,11 @@ void ScExternalRefManager::maybeLinkExternalFile( sal_uInt16 nFileId, bool bDefe aFilter = pFileData->maFilterName; aOptions = pFileData->maFilterOptions; } + + // Filter detection may access external links; defer it until we are allowed + if (!bDeferFilterDetection) + bDeferFilterDetection = !IsLinkUpdateAllowedInDoc(*mpDoc); + // If a filter was already set (for example, loading the cached table), // don't call GetFilterName which has to access the source file. // If filter detection is deferred, the next successfull loadSrcDocument() |