filter/inc/filter/msfilter/svdfppt.hxx | 2 - sd/source/filter/ppt/pptin.cxx | 42 +++++++++++++++++++++++++++------ 2 files changed, 36 insertions(+), 8 deletions(-)
New commits: commit 27a5c5c0c776d62cc219c2505e2df88ee1905a84 Author: Felix Zhang <fezh...@suse.com> Date: Fri May 10 18:13:45 2013 +0530 bnc#758621: show preset texts in slide placeholder. diff --git a/filter/inc/filter/msfilter/svdfppt.hxx b/filter/inc/filter/msfilter/svdfppt.hxx index 79272f5..e6a845b 100644 --- a/filter/inc/filter/msfilter/svdfppt.hxx +++ b/filter/inc/filter/msfilter/svdfppt.hxx @@ -1191,7 +1191,7 @@ struct ImplPPTTextObj explicit ImplPPTTextObj( PptSlidePersistEntry& rPersistEntry ) : mrPersistEntry ( rPersistEntry ) {}; }; -class PPTTextObj +class MSFILTER_DLLPUBLIC PPTTextObj { ImplPPTTextObj* mpImplTextObj; void ImplClear(); diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx index 8fa0545..37c2304 100644 --- a/sd/source/filter/ppt/pptin.cxx +++ b/sd/source/filter/ppt/pptin.cxx @@ -2311,6 +2311,7 @@ SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj const PptSlideLayoutAtom* pSlideLayout = GetSlideLayoutAtom(); if ( pSlideLayout || ( eAktPageKind == PPT_NOTEPAGE ) ) { + sal_uInt32 nPlacementId = pPlaceHolder->nPlacementId; sal_Int16 nPlaceholderId = pPlaceHolder->nPlaceholderId; sal_uInt16 i = 0; if ( eAktPageKind == PPT_SLIDEPAGE ) @@ -2321,7 +2322,7 @@ SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj break; } } - if ( i < 8 ) + if ( i < 8 || nPlacementId == 0xffffffff ) { PresObjKind ePresObjKind = PRESOBJ_NONE; sal_Bool bEmptyPresObj = sal_True; @@ -2329,18 +2330,40 @@ SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj if ( ( pTextObj->GetShapeType() == mso_sptRectangle ) || ( pTextObj->GetShapeType() == mso_sptTextBox ) ) { if ( pTextObj->Count() ) - bEmptyPresObj = sal_False; + if ( pTextObj->Count() > 1 || pTextObj->First()->GetTextSize() ) + bEmptyPresObj = sal_False; switch ( nPlaceholderId ) { case PPT_PLACEHOLDER_NOTESBODY : ePresObjKind = PRESOBJ_NOTES; break; case PPT_PLACEHOLDER_VERTICALTEXTTITLE : bVertical = sal_True; // PASSTHROUGH !!! - case PPT_PLACEHOLDER_TITLE : ePresObjKind = PRESOBJ_TITLE; break; + case PPT_PLACEHOLDER_TITLE : + case PPT_PLACEHOLDER_CENTEREDTITLE : + { + ePresObjKind = PRESOBJ_TITLE; + aPresentationText = pPage->GetPresObjText( ePresObjKind ); + break; + } case PPT_PLACEHOLDER_VERTICALTEXTBODY : bVertical = sal_True; // PASSTHROUGH !!! - case PPT_PLACEHOLDER_BODY : ePresObjKind = PRESOBJ_OUTLINE; break; - case PPT_PLACEHOLDER_CENTEREDTITLE : ePresObjKind = PRESOBJ_TITLE; break; - case PPT_PLACEHOLDER_SUBTITLE : ePresObjKind = PRESOBJ_TEXT; break; // PRESOBJ_OUTLINE + case PPT_PLACEHOLDER_BODY : + { + ePresObjKind = PRESOBJ_OUTLINE; + aPresentationText = pPage->GetPresObjText( ePresObjKind ); + break; + } + case PPT_PLACEHOLDER_SUBTITLE : + { + ePresObjKind = PRESOBJ_TEXT; + aPresentationText = pPage->GetPresObjText( ePresObjKind ); + break; + } + case PPT_PLACEHOLDER_OBJECT : + { + ePresObjKind = PRESOBJ_OBJECT; + aPresentationText = pPage->GetPresObjText( ePresObjKind ); + break; + } default : { @@ -2349,7 +2372,6 @@ SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj switch ( nPlaceholderId ) { case PPT_PLACEHOLDER_MEDIACLIP : - case PPT_PLACEHOLDER_OBJECT : ePresObjKind = PRESOBJ_OBJECT; break; case PPT_PLACEHOLDER_GRAPH : ePresObjKind = PRESOBJ_CHART; break; case PPT_PLACEHOLDER_TABLE : ePresObjKind = PRESOBJ_TABLE; break; case PPT_PLACEHOLDER_CLIPART : ePresObjKind = PRESOBJ_GRAPHIC; break; @@ -2380,6 +2402,12 @@ SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj if ( !bEmptyPresObj ) { pPage->InsertPresObj( pRet, ePresObjKind ); + if ( !pText->HasText() ) + { + SdrOutliner* pOutl = ((SdDrawDocument*)(pPage->GetModel()))->GetInternalOutliner(); + if ( aPresentationText.Len() ) + pPage->SetObjText( (SdrTextObj*)pText, pOutl, ePresKind, aPresentationText ); + } } else { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits