svx/source/svdraw/svdobj.cxx | 45 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-)
New commits: commit e03b053fcc2905f999598906fd37fda2c8c9a829 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Sat Apr 1 09:08:43 2023 +0900 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Sat Apr 1 11:30:17 2023 +0200 tdf#154040 writer still needs an "empty" object so create one For inserting frames writer still relies on an empty SdrObject, so create an instance of an empty object when requested to do so. Change-Id: I8b55318a7fb4b02c9c40de4ca845a804af3e781a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149899 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx index c4628f4cd2f2..8f3d2e7eb12a 100644 --- a/svx/source/svdraw/svdobj.cxx +++ b/svx/source/svdraw/svdobj.cxx @@ -3194,6 +3194,49 @@ rtl::Reference<SdrObject> SdrObjFactory::CreateObjectFromFactory(SdrModel& rSdrM return nullptr; } +namespace +{ + +class EmptyObject final : public SdrObject +{ +private: + virtual ~EmptyObject() override + {} + +public: + EmptyObject(SdrModel& rSdrModel) + : SdrObject(rSdrModel) + { + } + + EmptyObject(SdrModel& rSdrModel, EmptyObject const& rSource) + : SdrObject(rSdrModel, rSource) + { + } + + rtl::Reference<SdrObject> CloneSdrObject(SdrModel& rTargetModel) const override + { + return new EmptyObject(rTargetModel, *this); + } + + SdrInventor GetObjInventor() const override + { + return SdrInventor::Default; + } + + SdrObjKind GetObjIdentifier() const override + { + return SdrObjKind::NONE; + } + + void NbcRotate(const Point& /*rRef*/, Degree100 /*nAngle*/, double /*sinAngle*/, double /*cosAngle*/) override + { + assert(false); + } +}; + +} // end anonymous namespace + rtl::Reference<SdrObject> SdrObjFactory::MakeNewObject( SdrModel& rSdrModel, SdrInventor nInventor, @@ -3286,7 +3329,7 @@ rtl::Reference<SdrObject> SdrObjFactory::MakeNewObject( } } break; - case SdrObjKind::NONE : pObj = nullptr; break; + case SdrObjKind::NONE: pObj = new EmptyObject(rSdrModel); break; case SdrObjKind::Group : pObj=new SdrObjGroup(rSdrModel); break; case SdrObjKind::Polygon : pObj=new SdrPathObj(rSdrModel, SdrObjKind::Polygon ); break; case SdrObjKind::PolyLine : pObj=new SdrPathObj(rSdrModel, SdrObjKind::PolyLine ); break;