Blame SOURCES/0001-tdf-95210-SetHandleControllerPosition-is-busted-wrt-.patch

a9add1
From eafd3ee3f01bceef0eb3327be3139a8eee2a2b2e Mon Sep 17 00:00:00 2001
a9add1
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
a9add1
Date: Thu, 5 Nov 2015 13:42:13 +0000
a9add1
Subject: [PATCH] tdf#95210 SetHandleControllerPosition is busted wrt
a9add1
 HandleFlags::REFX
a9add1
a9add1
so instead of saving the initial pos and trying to restore the pos, instead use
a9add1
a bigger hammer and save the entire geometry and restore that instead.
a9add1
a9add1
Change-Id: Id06ea8f205f30771987089c5dc949bb52adc7a27
a9add1
---
a9add1
 cui/source/tabpages/transfrm.cxx | 16 ++++++++++------
a9add1
 1 file changed, 10 insertions(+), 6 deletions(-)
a9add1
a9add1
diff --git a/cui/source/tabpages/transfrm.cxx b/cui/source/tabpages/transfrm.cxx
a9add1
index f6b1f26..0db63db 100644
a9add1
--- a/cui/source/tabpages/transfrm.cxx
a9add1
+++ b/cui/source/tabpages/transfrm.cxx
a9add1
@@ -633,10 +633,15 @@ void SvxSlantTabPage::Reset(const SfxItemSet* rAttrs)
a9add1
         SdrObjKind eKind = (SdrObjKind) pObj->GetObjIdentifier();
a9add1
         if (eKind == OBJ_CUSTOMSHAPE)
a9add1
         {
a9add1
+            //save geometry
a9add1
+            SdrCustomShapeGeometryItem aInitialGeometry =
a9add1
+                static_cast<const SdrCustomShapeGeometryItem&>(pObj->GetMergedItem(SDRATTR_CUSTOMSHAPE_GEOMETRY));
a9add1
+
a9add1
             EnhancedCustomShape2d aShape(pObj);
a9add1
-            Point aInitialPosition;
a9add1
+
a9add1
             for (int i = 0; i < 2; ++i)
a9add1
             {
a9add1
+                Point aInitialPosition;
a9add1
                 if (!aShape.GetHandlePosition(i, aInitialPosition))
a9add1
                     break;
a9add1
                 m_aControlGroups[i]->Enable();
a9add1
@@ -655,14 +660,10 @@ void SvxSlantTabPage::Reset(const SfxItemSet* rAttrs)
a9add1
                 aShape.GetHandlePosition(i, aMinPosition);
a9add1
 
a9add1
                 Rectangle aLogicRect = aShape.GetLogicRect();
a9add1
+                aInitialPosition.Move(-aLogicRect.Left(), -aLogicRect.Top());
a9add1
                 aMaxPosition.Move(-aLogicRect.Left(), -aLogicRect.Top());
a9add1
                 aMinPosition.Move(-aLogicRect.Left(), -aLogicRect.Top());
a9add1
 
a9add1
-                aPosition.X = aInitialPosition.X();
a9add1
-                aPosition.Y = aInitialPosition.Y();
a9add1
-                aInitialPosition.Move(-aLogicRect.Left(), -aLogicRect.Top());
a9add1
-                aShape.SetHandleControllerPosition(i, aPosition);
a9add1
-
a9add1
                 SetMetricValue(*m_aControlX[i], aInitialPosition.X(), ePoolUnit);
a9add1
                 SetMetricValue(*m_aControlY[i], aInitialPosition.Y(), ePoolUnit);
a9add1
 
a9add1
@@ -681,6 +682,9 @@ void SvxSlantTabPage::Reset(const SfxItemSet* rAttrs)
a9add1
                     m_aControlY[i]->SetMax(aMaxPosition.Y(), FUNIT_MM);
a9add1
                 }
a9add1
             }
a9add1
+
a9add1
+            //restore geometry
a9add1
+            pObj->SetMergedItem(aInitialGeometry);
a9add1
         }
a9add1
     }
a9add1
     for (int i = 0; i < 2; ++i)
a9add1
-- 
a9add1
2.5.0
a9add1