summaryrefslogtreecommitdiffstats
path: root/filter/source/msfilter/msdffimp.cxx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-04-17 09:26:55 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-04-20 09:50:44 +0200
commit9f0fdb491cb128d3a5afb9c1f5907dfc31f6b197 (patch)
tree9ecc6824a994962689eee751b7fa1f0d6b4c7c32 /filter/source/msfilter/msdffimp.cxx
parentFunction to load graphic swapped out (loaded on demand) (diff)
downloadcore-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.cxx37
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: */