summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--filter/inc/filter/msfilter/msdffimp.hxx4
-rw-r--r--filter/source/msfilter/msdffimp.cxx31
-rw-r--r--sd/source/ui/unoidl/unoobj.cxx3
3 files changed, 34 insertions, 4 deletions
diff --git a/filter/inc/filter/msfilter/msdffimp.hxx b/filter/inc/filter/msfilter/msdffimp.hxx
index 8e625d474ecd..6359277f49f4 100644
--- a/filter/inc/filter/msfilter/msdffimp.hxx
+++ b/filter/inc/filter/msfilter/msdffimp.hxx
@@ -67,6 +67,7 @@ struct SvxMSDffShapeOrder;
class SvxMSDffManager;
class SfxItemSet;
class SdrObject;
+class SdrTextObj;
struct DffObjData;
class MSFILTER_DLLPUBLIC DffPropertyReader : public DffPropSet
@@ -503,7 +504,7 @@ protected :
// Fontwork objects use a new implementation of ReadObjText because the old
// one does not properly import multiple paragraphs.
- void ReadObjText( const OUString& rText, SdrObject* pObj ) const;
+ static void ReadObjText( const OUString& rText, SdrObject* pObj );
// the following method needs to be overridden for the import of OLE objects
virtual sal_Bool GetOLEStorageName( long nOLEId,
@@ -600,6 +601,7 @@ public:
void SetSvxMSDffSettings( sal_uInt32 nSettings ) { nSvxMSDffSettings = nSettings; };
static sal_Bool MakeContentStream( SotStorage * pStor, const GDIMetaFile & );
+ static void ReadObjText( SvStream& rStream, SdrObject* pObj );
static sal_Bool ConvertToOle2( SvStream& rStm,
sal_uInt32 nLen,
const GDIMetaFile*,
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index 41fe692fb620..6ead1ee08558 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -3444,10 +3444,39 @@ Color SvxMSDffManager::MSO_CLR_ToColor( sal_uInt32 nColorCode, sal_uInt16 nConte
return aColor;
}
+void SvxMSDffManager::ReadObjText( SvStream& rStream, SdrObject* pObj )
+{
+ DffRecordHeader aRecHd;
+ rStream >> aRecHd;
+ if( aRecHd.nRecType == DFF_msofbtClientTextbox || aRecHd.nRecType == 0x1022 )
+ {
+ while( rStream.GetError() == 0 && rStream.Tell() < aRecHd.GetRecEndFilePos() )
+ {
+ DffRecordHeader aHd;
+ rStream >> aHd;
+ switch( aHd.nRecType )
+ {
+ case DFF_PST_TextBytesAtom:
+ case DFF_PST_TextCharsAtom:
+ {
+ bool bUniCode = ( aHd.nRecType == DFF_PST_TextCharsAtom );
+ sal_uInt32 nBytes = aHd.nRecLen;
+ String aStr = MSDFFReadZString( rStream, nBytes, bUniCode );
+ ReadObjText( aStr, pObj );
+ }
+ break;
+ default:
+ break;
+ }
+ aHd.SeekToEndOfRecord( rStream );
+ }
+ }
+}
+
// sj: I just want to set a string for a text object that may contain multiple
// paragraphs. If I now take a look at the follwing code I get the impression that
// our outliner is too complicate to be used properly,
-void SvxMSDffManager::ReadObjText( const OUString& rText, SdrObject* pObj ) const
+void SvxMSDffManager::ReadObjText( const OUString& rText, SdrObject* pObj )
{
SdrTextObj* pText = PTR_CAST( SdrTextObj, pObj );
if ( pText )
diff --git a/sd/source/ui/unoidl/unoobj.cxx b/sd/source/ui/unoidl/unoobj.cxx
index d46264de21dd..856f64f6c301 100644
--- a/sd/source/ui/unoidl/unoobj.cxx
+++ b/sd/source/ui/unoidl/unoobj.cxx
@@ -623,7 +623,6 @@ void SAL_CALL SdXShape::setPropertyValue( const ::rtl::OUString& aPropertyName,
SetMasterDepend( ::cppu::any2bool(aValue) );
break;
-#ifdef FIXME_REMOVE_WHEN_RE_BASE_COMPLETE
case WID_LEGACYFRAGMENT:
{
uno::Reference< io::XInputStream > xInputStream;
@@ -636,7 +635,7 @@ void SAL_CALL SdXShape::setPropertyValue( const ::rtl::OUString& aPropertyName,
}
}
break;
-#endif
+
case WID_ANIMPATH:
{
uno::Reference< drawing::XShape > xShape( aValue, uno::UNO_QUERY );