diff options
Diffstat (limited to 'include/svx/svddrgmt.hxx')
-rw-r--r-- | include/svx/svddrgmt.hxx | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/include/svx/svddrgmt.hxx b/include/svx/svddrgmt.hxx index 0013da3284e3..3e1a13d6a3d3 100644 --- a/include/svx/svddrgmt.hxx +++ b/include/svx/svddrgmt.hxx @@ -66,11 +66,12 @@ class SdrDragEntrySdrObject : public SdrDragEntry private: const SdrObject& maOriginal; SdrObject* mpClone; - sdr::contact::ObjectContact& mrObjectContact; bool const mbModify; public: - SdrDragEntrySdrObject(const SdrObject& rOriginal, sdr::contact::ObjectContact& rObjectContact, bool bModify); + SdrDragEntrySdrObject( + const SdrObject& rOriginal, + bool bModify); virtual ~SdrDragEntrySdrObject() override; // #i54102# Split createPrimitive2DSequenceInCurrentState in prepareCurrentState and processing, @@ -127,10 +128,19 @@ protected: void clearSdrDragEntries(); void addSdrDragEntry(std::unique_ptr<SdrDragEntry> pNew); virtual void createSdrDragEntries(); - virtual void createSdrDragEntryForSdrObject(const SdrObject& rOriginal, sdr::contact::ObjectContact& rObjectContact); - - // access for derivated classes to maOverlayObjectList (passes ownership) - void addToOverlayObjectList(std::unique_ptr<sdr::overlay::OverlayObject> pNew) { maOverlayObjectList.append(std::move(pNew)); } + virtual void createSdrDragEntryForSdrObject(const SdrObject& rOriginal); + + // Helper to support inserting a new OverlayObject. It will do all + // necessary stuff involved with that: + // - add GridOffset for non-linear ViewToDevice transformation (calc) + // - add to OverlayManager + // - add to local OverlayObjectList - ownership change (!) + // It is centralized here (and protected) to avoid that new usages/ + // implementations forget one of these needed steps. + void insertNewlyCreatedOverlayObjectForSdrDragMethod( + std::unique_ptr<sdr::overlay::OverlayObject> pOverlayObject, + const sdr::contact::ObjectContact& rObjectContact, + sdr::overlay::OverlayManager& rOverlayManager); // access for derivated classes to mrSdrDragView SdrDragView& getSdrDragView() { return mrSdrDragView; } @@ -192,7 +202,9 @@ public: virtual void CancelSdrDrag(); virtual Pointer GetSdrDragPointer() const=0; - virtual void CreateOverlayGeometry(sdr::overlay::OverlayManager& rOverlayManager); + virtual void CreateOverlayGeometry( + sdr::overlay::OverlayManager& rOverlayManager, + const sdr::contact::ObjectContact& rObjectContact); void destroyOverlayGeometry(); virtual basegfx::B2DHomMatrix getCurrentTransformation(); @@ -225,7 +237,7 @@ private: void ImpCheckSnap(const Point& rPt); protected: - virtual void createSdrDragEntryForSdrObject(const SdrObject& rOriginal, sdr::contact::ObjectContact& rObjectContact) override; + virtual void createSdrDragEntryForSdrObject(const SdrObject& rOriginal) override; public: SdrDragMove(SdrDragView& rNewView); |