diff options
author | Muthu Subramanian <sumuthu@suse.com> | 2012-10-11 14:59:33 +0530 |
---|---|---|
committer | Muthu Subramanian <sumuthu@suse.com> | 2012-10-11 14:59:33 +0530 |
commit | bb3540a7cb6866a7b6c36cd71ea4bb9b0609d1e8 (patch) | |
tree | a8b90fe03a98327ff3c52f3e41cb168d126f9ecc /oox | |
parent | e2c481db7b905305128e733bb1fc8d0ad8cadbf5 (diff) |
n#778854: Fixes quite some issues with bullet points.
* Properties needs to be combined before applyed.
Rather than applying them separately twice.
* ParaMargins set to zero wrongly rather than boost::none
This caused its own set of problems.
* Hack: Push default zero to tabstops. This makes impress
calculate proper values for tabstops using leftmargin.
Diffstat (limited to 'oox')
-rw-r--r-- | oox/source/drawingml/textparagraph.cxx | 7 | ||||
-rw-r--r-- | oox/source/drawingml/textparagraphproperties.cxx | 19 |
2 files changed, 21 insertions, 5 deletions
diff --git a/oox/source/drawingml/textparagraph.cxx b/oox/source/drawingml/textparagraph.cxx index 1b599a6668e0..1119652fb155 100644 --- a/oox/source/drawingml/textparagraph.cxx +++ b/oox/source/drawingml/textparagraph.cxx @@ -108,15 +108,16 @@ void TextParagraph::insertAt( float fCharacterSize = nCharHeight > 0 ? GetFontHeight( nCharHeight ) : 18; if ( pTextParagraphStyle.get() ) { - pTextParagraphStyle->pushToPropSet( &rFilterBase, xProps, aioBulletList, NULL, sal_True, fCharacterSize, true ); + TextParagraphProperties aParaProp; + aParaProp.apply( *pTextParagraphStyle ); + aParaProp.apply( maProperties ); + aParaProp.pushToPropSet( &rFilterBase, xProps, aioBulletList, &pTextParagraphStyle->getBulletList(), sal_True, fCharacterSize, true ); fCharacterSize = pTextParagraphStyle->getCharHeightPoints( fCharacterSize ); // bullets have same color as following texts by default if( !aioBulletList.hasProperty( PROP_BulletColor ) && maRuns.size() > 0 && (*maRuns.begin())->getTextCharacterProperties().maCharColor.isUsed() ) aioBulletList[ PROP_BulletColor ] <<= (*maRuns.begin())->getTextCharacterProperties().maCharColor.getColor( rFilterBase.getGraphicHelper() ); - - maProperties.pushToPropSet( &rFilterBase, xProps, aioBulletList, &pTextParagraphStyle->getBulletList(), sal_True, fCharacterSize ); } // empty paragraphs do not have bullets in ppt diff --git a/oox/source/drawingml/textparagraphproperties.cxx b/oox/source/drawingml/textparagraphproperties.cxx index 3cd0bbaad37a..350d09affd68 100644 --- a/oox/source/drawingml/textparagraphproperties.cxx +++ b/oox/source/drawingml/textparagraphproperties.cxx @@ -26,6 +26,7 @@ #include <com/sun/star/awt/XBitmap.hpp> #include <com/sun/star/graphic/XGraphic.hpp> #include <com/sun/star/beans/PropertyValue.hpp> +#include <com/sun/star/style/TabStop.hpp> #include "oox/helper/helper.hxx" #include "oox/helper/propertyset.hxx" @@ -418,12 +419,15 @@ void TextParagraphProperties::pushToPropSet( const ::oox::core::XmlFilterBase* p if ( noParaLeftMargin ) { rioBulletMap[ PROP_LeftMargin ] <<= static_cast< sal_Int32 >( *noParaLeftMargin ); - noParaLeftMargin = boost::optional< sal_Int32 >( 0 ); + noParaLeftMargin = boost::none; } if ( noFirstLineIndentation ) { + // Force Paragraph property as zero - impress seems to use the value from previous + // (non) bullet line if not set to zero explicitly :( + aPropSet.setProperty( PROP_ParaFirstLineIndent, 0 ); rioBulletMap[ PROP_FirstLineOffset ] <<= static_cast< sal_Int32 >( *noFirstLineIndentation ); - noFirstLineIndentation = boost::optional< sal_Int32 >( 0 ); + noFirstLineIndentation = boost::none; } if ( nNumberingType != NumberingType::BITMAP && !rioBulletMap.hasProperty( PROP_BulletColor ) && pFilterBase ) rioBulletMap[ PROP_BulletColor ] <<= static_cast< sal_Int32 >( maTextCharacterProperties.maCharColor.getColor( pFilterBase->getGraphicHelper())); @@ -459,7 +463,18 @@ void TextParagraphProperties::pushToPropSet( const ::oox::core::XmlFilterBase* p if ( noParaLeftMargin ) aPropSet.setProperty( PROP_ParaLeftMargin, sal_Int32( *noParaLeftMargin ) ); if ( noFirstLineIndentation ) + { aPropSet.setProperty( PROP_ParaFirstLineIndent, *noFirstLineIndentation ); + if( bPushDefaultValues ) + { + // Reset TabStops - these would be auto calculated by Impress + TabStop aTabStop; + aTabStop.Position = 0; + Sequence< TabStop > aSeq(1); + aSeq[0] = aTabStop; + aPropSet.setProperty( PROP_ParaTabStops, aSeq ); + } + } } float TextParagraphProperties::getCharHeightPoints( float fDefault ) const |