ooo-build r14713 - in trunk: . patches/dev300



Author: noelpwer
Date: Wed Dec  3 17:27:15 2008
New Revision: 14713
URL: http://svn.gnome.org/viewvc/ooo-build?rev=14713&view=rev

Log:
2008-12-03  Noel Power  <noel power novell com>

        * patches/dev300/apply: add fix below for i96858
        * patches/dev300/fix-shape-export-i96858.diff:



Added:
   trunk/patches/dev300/fix-shape-export-i96858.diff
Modified:
   trunk/ChangeLog
   trunk/patches/dev300/apply

Modified: trunk/patches/dev300/apply
==============================================================================
--- trunk/patches/dev300/apply	(original)
+++ trunk/patches/dev300/apply	Wed Dec  3 17:27:15 2008
@@ -1579,9 +1579,10 @@
 # core changes not yet upstream
 sc-source-ui-vba-makefile-mk.diff
 
+# fix nasty corruption of rountriped excel documents with shapes
+fix-shape-export-i96858.diff, i#96858
 # export of macro bindings for shapes
 sc-export-shape-macro-bindings.diff, n#304739, noelpwer
-
 # export of hlink bindings for shapes
 sc-export-shape-hlink-bindings.diff, n#304739, noelpwer
 

Added: trunk/patches/dev300/fix-shape-export-i96858.diff
==============================================================================
--- (empty file)
+++ trunk/patches/dev300/fix-shape-export-i96858.diff	Wed Dec  3 17:27:15 2008
@@ -0,0 +1,87 @@
+diff --git sc/source/filter/excel/xiescher.cxx sc/source/filter/excel/xiescher.cxx
+index b19de94..52eb449 100644
+--- sc/source/filter/excel/xiescher.cxx
++++ sc/source/filter/excel/xiescher.cxx
+@@ -1416,41 +1416,49 @@ void XclImpTextObj::DoProcessSdrObj( SdrObject& rSdrObj ) const
+                 // plain text
+                 pTextObj->NbcSetText( maTextData.mxString->GetText() );
+             }
+-        }
+-
+-        // horizontal text alignment
+-        SvxAdjust eHorAlign = SVX_ADJUST_LEFT;
+-        switch( maTextData.maData.GetHorAlign() )
+-        {
+-            case EXC_OBJ_HOR_LEFT:      eHorAlign = SVX_ADJUST_LEFT;    break;
+-            case EXC_OBJ_HOR_CENTER:    eHorAlign = SVX_ADJUST_CENTER;  break;
+-            case EXC_OBJ_HOR_RIGHT:     eHorAlign = SVX_ADJUST_RIGHT;   break;
+-            case EXC_OBJ_HOR_JUSTIFY:   eHorAlign = SVX_ADJUST_BLOCK;   break;
+-        }
+-        rSdrObj.SetMergedItem( SvxAdjustItem( eHorAlign, EE_PARA_JUST ) );
+ 
+-        // vertical text alignment
+-        SdrTextVertAdjust eVerAlign = SDRTEXTVERTADJUST_TOP;
+-        switch( maTextData.maData.GetVerAlign() )
+-        {
+-            case EXC_OBJ_VER_TOP:       eVerAlign = SDRTEXTVERTADJUST_TOP;      break;
+-            case EXC_OBJ_VER_CENTER:    eVerAlign = SDRTEXTVERTADJUST_CENTER;   break;
+-            case EXC_OBJ_VER_BOTTOM:    eVerAlign = SDRTEXTVERTADJUST_BOTTOM;   break;
+-            case EXC_OBJ_VER_JUSTIFY:   eVerAlign = SDRTEXTVERTADJUST_BLOCK;    break;
+-        }
+-        rSdrObj.SetMergedItem( SdrTextVertAdjustItem( eVerAlign ) );
+-
+-        // orientation (this is only a fake, drawing does not support real text orientation)
+-        namespace csst = ::com::sun::star::text;
+-        csst::WritingMode eWriteMode = csst::WritingMode_LR_TB;
+-        switch( maTextData.maData.mnOrient )
+-        {
+-            case EXC_OBJ_ORIENT_NONE:       eWriteMode = csst::WritingMode_LR_TB;   break;
+-            case EXC_OBJ_ORIENT_STACKED:    eWriteMode = csst::WritingMode_TB_RL;   break;
+-            case EXC_OBJ_ORIENT_90CCW:      eWriteMode = csst::WritingMode_TB_RL;   break;
+-            case EXC_OBJ_ORIENT_90CW:       eWriteMode = csst::WritingMode_TB_RL;   break;
++            // horizontal text alignment
++            SvxAdjust eHorAlign = SVX_ADJUST_LEFT;
++            switch( maTextData.maData.GetHorAlign() )
++            {
++                case EXC_OBJ_HOR_LEFT:      eHorAlign = SVX_ADJUST_LEFT;    break;
++                case EXC_OBJ_HOR_CENTER:    eHorAlign = SVX_ADJUST_CENTER;  break;
++                case EXC_OBJ_HOR_RIGHT:     eHorAlign = SVX_ADJUST_RIGHT;   break;
++                case EXC_OBJ_HOR_JUSTIFY:   eHorAlign = SVX_ADJUST_BLOCK;   break;
++            }
++            rSdrObj.SetMergedItem( SvxAdjustItem( eHorAlign, EE_PARA_JUST ) );
++    
++            // vertical text alignment
++            SdrTextVertAdjust eVerAlign = SDRTEXTVERTADJUST_TOP;
++            switch( maTextData.maData.GetVerAlign() )
++            {
++                case EXC_OBJ_VER_TOP:       eVerAlign = SDRTEXTVERTADJUST_TOP;      break;
++                case EXC_OBJ_VER_CENTER:    eVerAlign = SDRTEXTVERTADJUST_CENTER;   break;
++                case EXC_OBJ_VER_BOTTOM:    eVerAlign = SDRTEXTVERTADJUST_BOTTOM;   break;
++                case EXC_OBJ_VER_JUSTIFY:   eVerAlign = SDRTEXTVERTADJUST_BLOCK;    break;
++            }
++            rSdrObj.SetMergedItem( SdrTextVertAdjustItem( eVerAlign ) );
++    
++            // orientation (this is only a fake, drawing does not support real text orientation)
++            namespace csst = ::com::sun::star::text;
++            csst::WritingMode eWriteMode = csst::WritingMode_LR_TB;
++            switch( maTextData.maData.mnOrient )
++            {
++                case EXC_OBJ_ORIENT_NONE:       eWriteMode = csst::WritingMode_LR_TB;   break;
++                case EXC_OBJ_ORIENT_STACKED:    eWriteMode = csst::WritingMode_TB_RL;   break;
++                case EXC_OBJ_ORIENT_90CCW:      eWriteMode = csst::WritingMode_TB_RL;   break;
++                case EXC_OBJ_ORIENT_90CW:       eWriteMode = csst::WritingMode_TB_RL;   break;
++            }
++            rSdrObj.SetMergedItem( SvxWritingModeItem( eWriteMode, SDRATTR_TEXTDIRECTION ) );
+         }
+-        rSdrObj.SetMergedItem( SvxWritingModeItem( eWriteMode, SDRATTR_TEXTDIRECTION ) );
++        // SdrObjCustomShape::SetVerticalWriting ( initiated from above ) calls 
++        // SdrTextObj::ForceOutlinerParaObject which ensures that we can erroneously 
++        // write a ClientTextbox record ( with no content ) which can cause a
++        // corrupted exported document.
++        // this hack ( or is it a reasonable solution ) doesn't set any text attributes
++        // for the drawing object if there is no text
++	
++        
+     }
+     // base class processing
+     XclImpRectObj::DoProcessSdrObj( rSdrObj );



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]