[Libreoffice-commits] core.git: include/svx svx/source

Caolán McNamara caolanm at redhat.com
Mon Mar 27 16:06:59 UTC 2017


 include/svx/svdoashp.hxx       |    1 +
 svx/source/svdraw/svdoashp.cxx |   22 +++++++++++++++-------
 2 files changed, 16 insertions(+), 7 deletions(-)

New commits:
commit b3020a00e8542fa54c055206eaf8a0f5bb8c709e
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon Mar 27 10:31:06 2017 +0100

    ofz#946 NbcAdjustTextFrameWidthAndHeight calling itself
    
    Change-Id: Ibebe76332d25af87841c3b7761a5583347dfbf34
    Reviewed-on: https://gerrit.libreoffice.org/35756
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/include/svx/svdoashp.hxx b/include/svx/svdoashp.hxx
index e978be4ede64..43c9c1bf4394 100644
--- a/include/svx/svdoashp.hxx
+++ b/include/svx/svdoashp.hxx
@@ -76,6 +76,7 @@ class SVX_DLLPUBLIC SdrObjCustomShape : public SdrTextObj
 private:
     // fObjectRotation is containing the object rotation in degrees.
     double fObjectRotation;
+    bool mbAdjustingTextFrameWidthAndHeight;
 
 protected:
     virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact() override;
diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx
index 0f90e4dad7dc..f01c49107472 100644
--- a/svx/source/svdraw/svdoashp.cxx
+++ b/svx/source/svdraw/svdoashp.cxx
@@ -833,10 +833,11 @@ sdr::properties::BaseProperties* SdrObjCustomShape::CreateObjectSpecificProperti
     return new sdr::properties::CustomShapeProperties(*this);
 }
 
-SdrObjCustomShape::SdrObjCustomShape() :
-    SdrTextObj(),
-    fObjectRotation( 0.0 ),
-    mpLastShadowGeometry(nullptr)
+SdrObjCustomShape::SdrObjCustomShape()
+    : SdrTextObj()
+    , fObjectRotation(0.0)
+    , mbAdjustingTextFrameWidthAndHeight(false)
+    , mpLastShadowGeometry(nullptr)
 {
     bClosedObj = true; // custom shapes may be filled
     bTextFrame = true;
@@ -2429,10 +2430,12 @@ Rectangle SdrObjCustomShape::ImpCalculateTextFrame( const bool bHgt, const bool
 
 bool SdrObjCustomShape::NbcAdjustTextFrameWidthAndHeight(bool bHgt, bool bWdt)
 {
-    Rectangle aNewTextRect = ImpCalculateTextFrame( bHgt, bWdt );
-    bool bRet = !aNewTextRect.IsEmpty() && ( aNewTextRect != maRect );
-    if ( bRet )
+    Rectangle aNewTextRect = ImpCalculateTextFrame(bHgt, bWdt);
+    const bool bRet = !aNewTextRect.IsEmpty() && aNewTextRect != maRect;
+    if (bRet && !mbAdjustingTextFrameWidthAndHeight)
     {
+        mbAdjustingTextFrameWidthAndHeight = true;
+
         // taking care of handles that should not been changed
         std::vector< SdrCustomShapeInteraction > aInteractionHandles( GetInteractionHandles() );
 
@@ -2453,9 +2456,12 @@ bool SdrObjCustomShape::NbcAdjustTextFrameWidthAndHeight(bool bHgt, bool bWdt)
             }
         }
         InvalidateRenderGeometry();
+
+        mbAdjustingTextFrameWidthAndHeight = false;
     }
     return bRet;
 }
+
 bool SdrObjCustomShape::AdjustTextFrameWidthAndHeight()
 {
     Rectangle aNewTextRect = ImpCalculateTextFrame( true/*bHgt*/, true/*bWdt*/ );
@@ -2767,6 +2773,8 @@ SdrObjCustomShape& SdrObjCustomShape::operator=(const SdrObjCustomShape& rObj)
         return *this;
     SdrTextObj::operator=( rObj );
     fObjectRotation = rObj.fObjectRotation;
+    mbAdjustingTextFrameWidthAndHeight = rObj.mbAdjustingTextFrameWidthAndHeight;
+    assert(!mbAdjustingTextFrameWidthAndHeight);
     InvalidateRenderGeometry();
     return *this;
 }


More information about the Libreoffice-commits mailing list