From cf812f15b3295a17a9b5d7e3a1c51b00dcbf2629 Mon Sep 17 00:00:00 2001 From: Tomaž Vajngerl Date: Wed, 27 May 2020 15:27:14 +0200 Subject: svx: add ability to show sub-selections in a marked object MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Draws selection rectangles inside the object window. Change-Id: I994477426489ea4cea89c86f9e51c9978f16b350 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95347 Tested-by: Tomaž Vajngerl Reviewed-by: Tomaž Vajngerl --- include/svx/svdmrkv.hxx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'include/svx') diff --git a/include/svx/svdmrkv.hxx b/include/svx/svdmrkv.hxx index 9ccf77ef2784..c7d7a4db4189 100644 --- a/include/svx/svdmrkv.hxx +++ b/include/svx/svdmrkv.hxx @@ -26,6 +26,8 @@ #include #include #include +#include + class SfxViewShell; @@ -84,6 +86,7 @@ enum class ImpGetDescriptionOptions }; class ImplMarkingOverlay; +class MarkingSubSelectionOverlay; class SVXCORE_DLLPUBLIC SdrMarkView : public SdrSnapView { @@ -94,6 +97,8 @@ class SVXCORE_DLLPUBLIC SdrMarkView : public SdrSnapView std::unique_ptr mpMarkPointsOverlay; std::unique_ptr mpMarkGluePointsOverlay; + std::unique_ptr mpMarkingSubSelectionOverlay; + protected: SdrObject* mpMarkedObj; // If not just one object ( i.e. More than one object ) is marked. SdrPageView* mpMarkedPV; // If all marked obects are situated on the same PageView. @@ -101,8 +106,10 @@ protected: Point maRef1; // Persistent - Rotation center / axis of reflection Point maRef2; // Persistent SdrHdlList maHdlList; + sdr::ViewSelection maSdrViewSelection; + std::vector maSubSelectionList; tools::Rectangle maMarkedObjRect; tools::Rectangle maMarkedPointsRect; tools::Rectangle maMarkedGluePointsRect; @@ -302,7 +309,8 @@ public: // Mark all objects within a rectangular area // Just objects are marked which are inclosed completely void MarkObj(const tools::Rectangle& rRect, bool bUnmark); - void MarkObj(SdrObject* pObj, SdrPageView* pPV, bool bUnmark=false, bool bImpNoSetMarkHdl=false); + void MarkObj(SdrObject* pObj, SdrPageView* pPV, bool bUnmark = false, bool bDoNoSetMarkHdl = false, + std::vector const & rSubSelections = std::vector()); void MarkAllObj(SdrPageView* pPV=nullptr); // pPage=NULL => all displayed pages void UnmarkAllObj(SdrPageView const * pPV=nullptr); // pPage=NULL => all displayed pages -- cgit