Author: alg
Date: Wed Mar 26 12:08:21 2014
New Revision: 1581802

URL: http://svn.apache.org/r1581802
Log:
i124477 set object shadow always at PPT import, it may be applied to object text

Modified:
    openoffice/trunk/main/filter/source/msfilter/msdffimp.cxx

Modified: openoffice/trunk/main/filter/source/msfilter/msdffimp.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/filter/source/msfilter/msdffimp.cxx?rev=1581802&r1=1581801&r2=1581802&view=diff
==============================================================================
--- openoffice/trunk/main/filter/source/msfilter/msdffimp.cxx (original)
+++ openoffice/trunk/main/filter/source/msfilter/msdffimp.cxx Wed Mar 26 
12:08:21 2014
@@ -2706,42 +2706,52 @@ void DffPropertyReader::ApplyAttributes(
        }
        if ( bHasShadow )
        {
-               // #160376# sj: activating shadow only if fill and or linestyle 
is used
-               // this is required because of the latest drawing layer core 
changes.
-               // Issue i104085 is related to this.
-               sal_uInt32 nLineFlags(GetPropertyValue( 
DFF_Prop_fNoLineDrawDash ));
-               if(!IsHardAttribute( DFF_Prop_fLine ) && 
!IsCustomShapeStrokedByDefault( rObjData.eShapeType ))
-                       nLineFlags &= ~0x08;
-               sal_uInt32 nFillFlags(GetPropertyValue( DFF_Prop_fNoFillHitTest 
));
-               if(!IsHardAttribute( DFF_Prop_fFilled ) && 
!IsCustomShapeFilledByDefault( rObjData.eShapeType ))
-                       nFillFlags &= ~0x10;
-               if ( nFillFlags & 0x10 )
-               {
-                       MSO_FillType eMSO_FillType = 
(MSO_FillType)GetPropertyValue( DFF_Prop_fillType, mso_fillSolid );
-                       switch( eMSO_FillType )
-                       {
-                               case mso_fillSolid :
-                               case mso_fillPattern :
-                               case mso_fillTexture :
-                               case mso_fillPicture :
-                               case mso_fillShade :
-                               case mso_fillShadeCenter :
-                               case mso_fillShadeShape :
-                               case mso_fillShadeScale :
-                               case mso_fillShadeTitle :
-                               break;
-                               // case mso_fillBackground :
-                               default:
-                                       nFillFlags &=~0x10;                     
// no fillstyle used    
-                               break;
-                       }
-               }
-               if ( ( ( nLineFlags & 0x08 ) == 0 ) && ( ( nFillFlags & 0x10 ) 
== 0 ) && ( rObjData.eShapeType != mso_sptPictureFrame ))        // if there is 
no fillstyle and linestyle
-                       bHasShadow = sal_False;                                 
                                                        // we are turning 
shadow off.
+        static bool bCheckShadow(false);
 
-               if ( bHasShadow )
-                       rSet.Put( SdrShadowItem( bHasShadow ) );
-       }
+        // #124477# Found no reason not to set shadow, esp. since it is 
applied to evtl. existing text
+        // and will lead to an error of in PPT someone used text and added the 
object shadow to the
+        // object carryintg that text. I found no cases where this leads to 
problems (the old bugtracker 
+        // task #160376# from sj is unfortunately no longer available). 
Keeping the code for now
+        // to allow easy fallback when this shows problems in the future
+        if(bCheckShadow)
+        {
+            // #160376# sj: activating shadow only if fill and or linestyle is 
used
+            // this is required because of the latest drawing layer core 
changes.
+            // Issue i104085 is related to this.
+            sal_uInt32 nLineFlags(GetPropertyValue( DFF_Prop_fNoLineDrawDash 
));
+            if(!IsHardAttribute( DFF_Prop_fLine ) && 
!IsCustomShapeStrokedByDefault( rObjData.eShapeType ))
+                nLineFlags &= ~0x08;
+            sal_uInt32 nFillFlags(GetPropertyValue( DFF_Prop_fNoFillHitTest ));
+            if(!IsHardAttribute( DFF_Prop_fFilled ) && 
!IsCustomShapeFilledByDefault( rObjData.eShapeType ))
+                nFillFlags &= ~0x10;
+            if ( nFillFlags & 0x10 )
+            {
+                MSO_FillType eMSO_FillType = (MSO_FillType)GetPropertyValue( 
DFF_Prop_fillType, mso_fillSolid );
+                switch( eMSO_FillType )
+                {
+                    case mso_fillSolid :
+                    case mso_fillPattern :
+                    case mso_fillTexture :
+                    case mso_fillPicture :
+                    case mso_fillShade :
+                    case mso_fillShadeCenter :
+                    case mso_fillShadeShape :
+                    case mso_fillShadeScale :
+                    case mso_fillShadeTitle :
+                    break;
+                    // case mso_fillBackground :
+                    default:
+                        nFillFlags &=~0x10;                    // no fillstyle 
used    
+                    break;
+                }
+            }
+            if ( ( ( nLineFlags & 0x08 ) == 0 ) && ( ( nFillFlags & 0x10 ) == 
0 ) && ( rObjData.eShapeType != mso_sptPictureFrame ))   // if there is no 
fillstyle and linestyle
+                bHasShadow = sal_False;                                        
                                                        // we are turning 
shadow off.
+        }
+
+        if ( bHasShadow )
+            rSet.Put( SdrShadowItem( bHasShadow ) );
+    }
        ApplyLineAttributes( rSet, rObjData.eShapeType ); // #i28269#
        ApplyFillAttributes( rIn, rSet, rObjData );
        if ( rObjData.eShapeType != mso_sptNil || IsProperty( 
DFF_Prop_pVertices ) )


Reply via email to