summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorMuthu Subramanian <sumuthu@suse.com>2012-10-11 14:59:33 +0530
committerMuthu Subramanian <sumuthu@suse.com>2012-10-11 14:59:33 +0530
commitbb3540a7cb6866a7b6c36cd71ea4bb9b0609d1e8 (patch)
treea8b90fe03a98327ff3c52f3e41cb168d126f9ecc /oox
parente2c481db7b905305128e733bb1fc8d0ad8cadbf5 (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.cxx7
-rw-r--r--oox/source/drawingml/textparagraphproperties.cxx19
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