diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2020-05-27 15:27:14 +0200 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2020-06-02 18:55:07 +0200 |
commit | cf812f15b3295a17a9b5d7e3a1c51b00dcbf2629 (patch) | |
tree | 1845ff84e2731c7ecb5b7446099c93e429e71602 /include | |
parent | 36071e96e75556285ece937923e5240e343e2185 (diff) |
svx: add ability to show sub-selections in a marked object
Draws selection rectangles inside the object window.
Change-Id: I994477426489ea4cea89c86f9e51c9978f16b350
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95347
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/svx/svdmrkv.hxx | 10 |
1 files changed, 9 insertions, 1 deletions
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 <svx/svdtypes.hxx> #include <svx/svxdllapi.h> #include <o3tl/typed_flags_set.hxx> +#include <basegfx/range/b2drectangle.hxx> + 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<ImplMarkingOverlay> mpMarkPointsOverlay; std::unique_ptr<ImplMarkingOverlay> mpMarkGluePointsOverlay; + std::unique_ptr<MarkingSubSelectionOverlay> 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<basegfx::B2DRectangle> 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<basegfx::B2DRectangle> const & rSubSelections = std::vector<basegfx::B2DRectangle>()); void MarkAllObj(SdrPageView* pPV=nullptr); // pPage=NULL => all displayed pages void UnmarkAllObj(SdrPageView const * pPV=nullptr); // pPage=NULL => all displayed pages |