Author: alg
Date: Thu Oct 31 11:53:29 2013
New Revision: 1537454

URL: http://svn.apache.org/r1537454
Log:
i123573 corrected reaction on ItemChanges for CustomShapes

Modified:
    openoffice/trunk/main/svx/inc/svx/sdr/properties/customshapeproperties.hxx
    openoffice/trunk/main/svx/source/sdr/properties/customshapeproperties.cxx

Modified: 
openoffice/trunk/main/svx/inc/svx/sdr/properties/customshapeproperties.hxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/svx/inc/svx/sdr/properties/customshapeproperties.hxx?rev=1537454&r1=1537453&r2=1537454&view=diff
==============================================================================
--- openoffice/trunk/main/svx/inc/svx/sdr/properties/customshapeproperties.hxx 
(original)
+++ openoffice/trunk/main/svx/inc/svx/sdr/properties/customshapeproperties.hxx 
Thu Oct 31 11:53:29 2013
@@ -34,7 +34,8 @@ namespace sdr
        {
                class CustomShapeProperties : public TextProperties
                {
-                       void UpdateTextFrameStatus();
+        private:
+                       void UpdateTextFrameStatus(bool 
bInvalidateRenderGeometry);
 
                protected:
                        // create a new itemset

Modified: 
openoffice/trunk/main/svx/source/sdr/properties/customshapeproperties.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/svx/source/sdr/properties/customshapeproperties.cxx?rev=1537454&r1=1537453&r2=1537454&view=diff
==============================================================================
--- openoffice/trunk/main/svx/source/sdr/properties/customshapeproperties.cxx 
(original)
+++ openoffice/trunk/main/svx/source/sdr/properties/customshapeproperties.cxx 
Thu Oct 31 11:53:29 2013
@@ -39,21 +39,32 @@ namespace sdr
 {
     namespace properties
     {
-        void CustomShapeProperties::UpdateTextFrameStatus()
+        void CustomShapeProperties::UpdateTextFrameStatus(bool 
bInvalidateRenderGeometry)
         {
             SdrObjCustomShape& rObj = static_cast< SdrObjCustomShape& 
>(GetSdrObject());
             const bool bOld(rObj.bTextFrame);
 
+            // change TextFrame flag when bResizeShapeToFitText changes (which 
is mapped 
+            // on the item SDRATTR_TEXT_AUTOGROWHEIGHT for custom shapes, argh)
             rObj.bTextFrame = 0 != static_cast< const 
SdrTextAutoGrowHeightItem& 
>(GetObjectItemSet().Get(SDRATTR_TEXT_AUTOGROWHEIGHT)).GetValue();
 
+            // check if it did change
             if(rObj.bTextFrame != bOld)
             {
-                rObj.InvalidateRenderGeometry();
+                // on change also invalidate render geometry
+                bInvalidateRenderGeometry = true;
 
-                // #115391# Potential recursuin, since it calls 
SetObjectItemSet again, but rObj.bTextFrame 
-                // will not change again, thus it will be only one level and 
terminate
+                // #115391# Potential recursion, since it calls 
SetObjectItemSet again, but rObj.bTextFrame 
+                // will not change again. Thus it will be only one level and 
terminate safely
                 rObj.AdaptTextMinSize(); 
             }
+
+            if(bInvalidateRenderGeometry)
+            {
+                // if asked for or bResizeShapeToFitText changed, make sure 
that
+                // the render geometry is reconstructed using changed 
parameters
+                rObj.InvalidateRenderGeometry();
+            }
         }
 
         SfxItemSet& 
CustomShapeProperties::CreateObjectSpecificItemSet(SfxItemPool& rPool)
@@ -134,7 +145,7 @@ namespace sdr
             TextProperties::ItemSetChanged(rSet);
 
             // update bTextFrame and RenderGeometry
-            UpdateTextFrameStatus();
+            UpdateTextFrameStatus(true);
         }
 
         void CustomShapeProperties::PostItemChange(const sal_uInt16 nWhich)
@@ -144,7 +155,7 @@ namespace sdr
                 case SDRATTR_TEXT_AUTOGROWHEIGHT:
                 {
                     // #115391#  update bTextFrame and RenderGeometry using 
AdaptTextMinSize()
-                    UpdateTextFrameStatus();
+                    UpdateTextFrameStatus(false);
                     break;
                 }
                 default:
@@ -163,7 +174,7 @@ namespace sdr
             TextProperties::ItemChange( nWhich, pNewItem );
 
             // update bTextFrame and RenderGeometry
-            UpdateTextFrameStatus();
+            UpdateTextFrameStatus(true);
         }
 
         void CustomShapeProperties::SetStyleSheet(SfxStyleSheet* 
pNewStyleSheet, sal_Bool bDontRemoveHardAttr)
@@ -172,13 +183,13 @@ namespace sdr
             TextProperties::SetStyleSheet( pNewStyleSheet, bDontRemoveHardAttr 
);
 
             // update bTextFrame and RenderGeometry
-            UpdateTextFrameStatus();
+            UpdateTextFrameStatus(true);
         }
 
         void CustomShapeProperties::ForceDefaultAttributes()
         {
             // update bTextFrame and RenderGeometry
-            UpdateTextFrameStatus();
+            UpdateTextFrameStatus(true);
 
             // SJ: Following is no good if creating customshapes, leading to 
objects that are white after loading via xml
             // This means: Do *not* call parent here is by purpose...
@@ -226,11 +237,8 @@ namespace sdr
                 bRemoveRenderGeometry = sal_True;
             }
 
-            if ( bRemoveRenderGeometry )
-            {
-                // update bTextFrame and RenderGeometry
-                UpdateTextFrameStatus();
-            }
+            // update bTextFrame and RenderGeometry
+            UpdateTextFrameStatus(bRemoveRenderGeometry);
         }
     } // end of namespace properties
 } // end of namespace sdr


Reply via email to