[Libreoffice-commits] core.git: Branch 'distro/suse/suse-4.0' - filter/inc sd/source
Felix Zhang
fezhang at suse.com
Fri May 10 05:43:47 PDT 2013
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 <fezhang at 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
{
More information about the Libreoffice-commits
mailing list