diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-04-17 09:26:55 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2018-04-20 09:50:44 +0200 |
commit | 9f0fdb491cb128d3a5afb9c1f5907dfc31f6b197 (patch) | |
tree | 9ecc6824a994962689eee751b7fa1f0d6b4c7c32 /filter/source/msfilter/msdffimp.cxx | |
parent | Function to load graphic swapped out (loaded on demand) (diff) | |
download | core-9f0fdb491cb128d3a5afb9c1f5907dfc31f6b197.tar.gz core-9f0fdb491cb128d3a5afb9c1f5907dfc31f6b197.zip |
forcepoint#38 notify that obj in group was deleted
Change-Id: I4599a8e93eccb28c8a406418fd5c7c670b59c871
Reviewed-on: https://gerrit.libreoffice.org/53162
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'filter/source/msfilter/msdffimp.cxx')
-rw-r--r-- | filter/source/msfilter/msdffimp.cxx | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx index 4eaf3205e437..6e1726c9785c 100644 --- a/filter/source/msfilter/msdffimp.cxx +++ b/filter/source/msfilter/msdffimp.cxx @@ -5028,8 +5028,34 @@ void SvxMSDffManager::GetGroupAnchors( const DffRecordHeader& rHd, SvStream& rSt } } -void SvxMSDffManager::FreeObj(void* /*pData*/, SdrObject* pObj) +SvxMSDffImportRec* SvxMSDffImportData::find(const SdrObject* pObj) { + for (const auto& it : *this) + { + if (it->pObj == pObj) + return it.get(); + } + return nullptr; +} + +void SvxMSDffManager::NotifyFreeObj(void* pData, SdrObject* pObj) +{ + if (SdrObjGroup* pGroup = dynamic_cast<SdrObjGroup*>(pObj)) + { + SdrObjList* pSubList = pGroup->GetSubList(); + size_t nObjCount = pSubList->GetObjCount(); + for (size_t i = 0; i < nObjCount; ++i) + NotifyFreeObj(pData, pSubList->GetObj(i)); + } + + SvxMSDffImportData& rImportData = *static_cast<SvxMSDffImportData*>(pData); + if (SvxMSDffImportRec* pRecord = rImportData.find(pObj)) + pRecord->pObj = nullptr; +} + +void SvxMSDffManager::FreeObj(void* pData, SdrObject* pObj) +{ + NotifyFreeObj(pData, pObj); SdrObject::Free(pObj); } @@ -7471,4 +7497,13 @@ SdrObject* SvxMSDffManager::getShapeForId( sal_Int32 nShapeId ) return aIter != maShapeIdContainer.end() ? (*aIter).second : nullptr; } +SvxMSDffImportData::SvxMSDffImportData(const tools::Rectangle& rParentRect) + : aParentRect(rParentRect) +{ +} + +SvxMSDffImportData::~SvxMSDffImportData() +{ +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |