From 958928086652c6a1c48663aa45e97f387fcf0b31 Mon Sep 17 00:00:00 2001 From: mert Date: Tue, 23 Feb 2021 10:45:51 +0300 Subject: Implemented MoveShapeHandle method This method will be shared among 3 modules via uno:MoveShapeHandle uno command Change-Id: I921a1f7f004e2004e142954b40b4b93282eb8fed Signed-off-by: mert Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111373 Tested-by: Jenkins CollaboraOffice Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111507 Tested-by: Jenkins --- svx/source/svdraw/svdview.cxx | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'svx/source/svdraw/svdview.cxx') diff --git a/svx/source/svdraw/svdview.cxx b/svx/source/svdraw/svdview.cxx index f591334dea08..6e26091a8e43 100644 --- a/svx/source/svdraw/svdview.cxx +++ b/svx/source/svdraw/svdview.cxx @@ -1407,6 +1407,41 @@ bool SdrView::BegMark(const Point& rPnt, bool bAddMark, bool bUnmark) } } +bool SdrView::MoveShapeHandle(const sal_uInt32 handleNum, const Point& aEndPoint) +{ + if (!GetMarkedObjectList().GetMarkCount()) + return false; + + SdrHdl * pHdl = GetHdlList().GetHdl(handleNum); + if (pHdl == nullptr) + return false; + + const SdrDragStat& rDragStat = GetDragStat(); + // start dragging + BegDragObj(pHdl->GetPos(), nullptr, pHdl, 0); + if (!IsDragObj()) + return false; + + bool bWasNoSnap = rDragStat.IsNoSnap(); + bool bWasSnapEnabled = IsSnapEnabled(); + + // switch snapping off + if(!bWasNoSnap) + const_cast(rDragStat).SetNoSnap(); + if(bWasSnapEnabled) + SetSnapEnabled(false); + + MovAction(aEndPoint); + EndDragObj(); + + if (!bWasNoSnap) + const_cast(rDragStat).SetNoSnap(bWasNoSnap); + if (bWasSnapEnabled) + SetSnapEnabled(bWasSnapEnabled); + + return true; +} + void SdrView::ConfigurationChanged( ::utl::ConfigurationBroadcaster*p, ConfigurationHints nHint) { onAccessibilityOptionsChanged(); -- cgit