filter/inc/filter/msfilter/svdfppt.hxx | 3 - filter/source/msfilter/svdfppt.cxx | 11 ++++-- sd/source/filter/ppt/pptin.cxx | 57 ++++++--------------------------- 3 files changed, 20 insertions(+), 51 deletions(-)
New commits: commit 4255f70fcf660900e9bcbadffec60015cb4c2502 Author: Jan Holesovsky <ke...@suse.cz> Date: Sun May 12 17:33:22 2013 +0200 bnc#758621: Set the attribs for the entire para if a placeholder. Setting attributes for empty paragraphs does nothing, we have to apply it to the style directly. Change-Id: Id2a63c961e408906fa7c6457091405692262c6b7 diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx index f1e1a75..5185298 100644 --- a/filter/source/msfilter/svdfppt.cxx +++ b/filter/source/msfilter/svdfppt.cxx @@ -2286,6 +2286,14 @@ SdrObject* SdrPowerPointImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* } pPortion->ApplyTo( aPortionAttribs, (SdrPowerPointImport&)*this, nDestinationInstance, pTextObj ); rOutliner.QuickSetAttribs( aPortionAttribs, aSelection ); + + // set the attribs for the entire paragraph, if it is a placeholder + if ( pTextObj->GetOEPlaceHolderAtom() && aSelection.nStartPos == aSelection.nEndPos ) + { + SfxItemSet& rItemSet = rOutliner.GetStyleSheet( nParaIndex )->GetItemSet(); + pPortion->ApplyTo( rItemSet, (SdrPowerPointImport&)*this, nDestinationInstance, pTextObj ); + } + aSelection.nStartPos = aSelection.nEndPos; } boost::optional< sal_Int16 > oStartNumbering; commit fc3fc4f1af182816a575751746564dae525f2e71 Author: Jan Holesovsky <ke...@suse.cz> Date: Fri May 10 20:27:40 2013 +0200 bnc#758621: Set presentation object as non-empty only if not a placeholder. Based on work of Felix Zhang <fezh...@suse.com>, thank you! Change-Id: I26c7cef17b9a5f3d73107b5c974983e58c347d52 diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx index 476eed8..1e15c3d 100644 --- a/sd/source/filter/ppt/pptin.cxx +++ b/sd/source/filter/ppt/pptin.cxx @@ -2321,8 +2321,6 @@ SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj sal_Bool bVertical = sal_False; if ( ( pTextObj->GetShapeType() == mso_sptRectangle ) || ( pTextObj->GetShapeType() == mso_sptTextBox ) ) { - if ( pTextObj->Count() ) - bEmptyPresObj = sal_False; switch ( nPlaceholderId ) { case PPT_PLACEHOLDER_NOTESBODY : ePresObjKind = PRESOBJ_NOTES; break; @@ -2337,7 +2335,7 @@ SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj default : { - if ( !pTextObj->Count() ) + if ( pTextObj->Count() == 0 ) { switch ( nPlaceholderId ) { @@ -2349,6 +2347,8 @@ SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj case PPT_PLACEHOLDER_ORGANISZATIONCHART : ePresObjKind = PRESOBJ_ORGCHART; break; } } + else + bEmptyPresObj = sal_False; }; } } commit e3abe3f1c7e4bb7c788de71a9c01dffb1c088332 Author: Jan Holesovsky <ke...@suse.cz> Date: Fri May 10 19:56:04 2013 +0200 bnc#758621: We don't need this index for anything. Worse, it prevents us to enter part of the code that we need to execute in some (valid) circumstances. Change-Id: I15084b5efa10fbd5cd0d42856c2745c93d6765da diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx index 9d5b20e..476eed8 100644 --- a/sd/source/filter/ppt/pptin.cxx +++ b/sd/source/filter/ppt/pptin.cxx @@ -2313,17 +2313,9 @@ SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj { sal_uInt32 nPlacementId = pPlaceHolder->nPlacementId; sal_Int16 nPlaceholderId = pPlaceHolder->nPlaceholderId; - sal_uInt16 i = 0; + if ( eAktPageKind == PPT_SLIDEPAGE ) { - for ( ; i < 8; i++ ) - { - if ( pSlideLayout->aPlaceholderId[ i ] == nPlaceholderId ) - break; - } - } - if ( i < 8 ) - { PresObjKind ePresObjKind = PRESOBJ_NONE; sal_Bool bEmptyPresObj = sal_True; sal_Bool bVertical = sal_False; commit a6b3cc0212a13615909be47dd06d537d5d9429d5 Author: Jan Holesovsky <ke...@suse.cz> Date: Fri May 10 19:48:06 2013 +0200 bnc#758621: Kill unused aPlacementId, it is never set. Based on work of Felix Zhang <fezh...@suse.com>, thank you! Change-Id: I733a2b69d01f86bcaf0fa401671d475d9b4641a6 diff --git a/filter/inc/filter/msfilter/svdfppt.hxx b/filter/inc/filter/msfilter/svdfppt.hxx index 79272f5..cb34b9a 100644 --- a/filter/inc/filter/msfilter/svdfppt.hxx +++ b/filter/inc/filter/msfilter/svdfppt.hxx @@ -195,7 +195,6 @@ struct PptSlideLayoutAtom { sal_Int32 eLayout; // 0..18 sal_uInt8 aPlaceholderId[ 8 ]; - sal_uLong aPlacementId[ 8 ]; public: PptSlideLayoutAtom() { Clear(); } diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx index beb774b..f1e1a75 100644 --- a/filter/source/msfilter/svdfppt.cxx +++ b/filter/source/msfilter/svdfppt.cxx @@ -289,10 +289,7 @@ void PptSlideLayoutAtom::Clear() { eLayout = 0; for ( sal_uInt16 i = 0; i < 8; i++ ) - { aPlaceholderId[ i ] = 0; - aPlacementId[ i ] = 0; - } } SvStream& operator>>( SvStream& rIn, PptSlideLayoutAtom& rAtom ) diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx index 8fa0545..9d5b20e 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 ) @@ -2390,7 +2391,7 @@ SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj ApplyAttributes( rStCtrl, aSet ); pPresObj->SetMergedItemSet(aSet); - if ( ( eAktPageKind != PPT_NOTEPAGE ) && ( pSlideLayout->aPlacementId[ i ] != (sal_uLong)-1 ) ) + if ( ( eAktPageKind != PPT_NOTEPAGE ) && ( nPlacementId != 0xffffffff ) ) { SdrObject* pTitleObj = ((SdPage&)pPage->TRG_GetMasterPage()).GetPresObj( PRESOBJ_TITLE ); SdrObject* pOutlineObj = ((SdPage&)pPage->TRG_GetMasterPage()).GetPresObj( PRESOBJ_OUTLINE ); @@ -2409,7 +2410,7 @@ SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj Rectangle aLogicRect( pPresObj->GetLogicRect() ); Size aLogicSize( aLogicRect.GetSize() ); - switch ( pSlideLayout->aPlacementId[ i ] ) + switch ( nPlacementId ) { case 0 : // Lage im Titelbereich { commit 71fa700450e6fee186bc117e6d95a382d53ad2c4 Author: Jan Holesovsky <ke...@suse.cz> Date: Mon May 13 10:45:18 2013 +0200 Revert "bnc#758621: show preset texts in slide placeholder." This reverts commit 27a5c5c0c776d62cc219c2505e2df88ee1905a84. Mid-air collision :-) I've been working on an improvement based on this patch when Muthu pushed it - the following commits are based on the Felix's work, thank you Felix! diff --git a/filter/inc/filter/msfilter/svdfppt.hxx b/filter/inc/filter/msfilter/svdfppt.hxx index e6a845b..79272f5 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 MSFILTER_DLLPUBLIC PPTTextObj +class PPTTextObj { ImplPPTTextObj* mpImplTextObj; void ImplClear(); diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx index 37c2304..8fa0545 100644 --- a/sd/source/filter/ppt/pptin.cxx +++ b/sd/source/filter/ppt/pptin.cxx @@ -2311,7 +2311,6 @@ 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 ) @@ -2322,7 +2321,7 @@ SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj break; } } - if ( i < 8 || nPlacementId == 0xffffffff ) + if ( i < 8 ) { PresObjKind ePresObjKind = PRESOBJ_NONE; sal_Bool bEmptyPresObj = sal_True; @@ -2330,40 +2329,18 @@ SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj if ( ( pTextObj->GetShapeType() == mso_sptRectangle ) || ( pTextObj->GetShapeType() == mso_sptTextBox ) ) { if ( pTextObj->Count() ) - if ( pTextObj->Count() > 1 || pTextObj->First()->GetTextSize() ) - bEmptyPresObj = sal_False; + 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 : - case PPT_PLACEHOLDER_CENTEREDTITLE : - { - ePresObjKind = PRESOBJ_TITLE; - aPresentationText = pPage->GetPresObjText( ePresObjKind ); - break; - } + case PPT_PLACEHOLDER_TITLE : ePresObjKind = PRESOBJ_TITLE; break; case PPT_PLACEHOLDER_VERTICALTEXTBODY : bVertical = sal_True; // PASSTHROUGH !!! - 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; - } + 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 default : { @@ -2372,6 +2349,7 @@ 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; @@ -2402,12 +2380,6 @@ 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