summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKatarina Behrens <Katarina.Behrens@cib.de>2015-11-05 17:57:07 +0100
committerEike Rathke <erack@redhat.com>2015-11-05 18:10:52 +0000
commitdd971d008780186c88cc33df3610ed8cc9f0a2f4 (patch)
tree1d93e542e9c8fe05450a2763989c02fa50119d6d
parent2dd20b4745a5876ca40106163799e89bf539b2cf (diff)
tdf#92296: Fix off-by-one formatting of text runs on OOXML export
This essentially reverts commit 8865ed2efecd03722d10e522265f31c99b13b2bb and implements a different fix for tdf#90812: If the formatting of entire cell is uniform, remove formatting of the leading text run and create corresponding cell style. In all other cases, write out formattings for each individual run. Change-Id: I7724b7a474f773f2cdc39e9150d843642fb05bbe Reviewed-on: https://gerrit.libreoffice.org/19811 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com>
-rw-r--r--sc/source/filter/excel/xestring.cxx3
-rw-r--r--sc/source/filter/excel/xetable.cxx17
2 files changed, 12 insertions, 8 deletions
diff --git a/sc/source/filter/excel/xestring.cxx b/sc/source/filter/excel/xestring.cxx
index 4bb74066a25e..1a420b2c61d5 100644
--- a/sc/source/filter/excel/xestring.cxx
+++ b/sc/source/filter/excel/xestring.cxx
@@ -428,10 +428,9 @@ void XclExpString::WriteXml( XclExpXmlStream& rStrm ) const
const XclExpFont* pFont = NULL;
for ( ; aIt != aEnd; ++aIt )
{
- // pFont getting first then pass it to run otherwise pFont is NULL.
- pFont = rFonts.GetFont( aIt->mnFontIdx );
nStart = lcl_WriteRun( rStrm, GetUnicodeBuffer(),
nStart, aIt->mnChar-nStart, pFont );
+ pFont = rFonts.GetFont( aIt->mnFontIdx );
}
lcl_WriteRun( rStrm, GetUnicodeBuffer(),
nStart, GetUnicodeBuffer().size() - nStart, pFont );
diff --git a/sc/source/filter/excel/xetable.cxx b/sc/source/filter/excel/xetable.cxx
index 2aa170e4d5a5..e8e4d0000269 100644
--- a/sc/source/filter/excel/xetable.cxx
+++ b/sc/source/filter/excel/xetable.cxx
@@ -723,13 +723,18 @@ void XclExpLabelCell::Init( const XclExpRoot& rRoot,
mxText = xText;
mnSstIndex = 0;
- // create the cell format
- sal_uInt16 nXclFont = mxText->RemoveLeadingFont();
- if( GetXFId() == EXC_XFID_NOTFOUND )
+ const XclFormatRunVec& rFormats = mxText->GetFormats();
+ // Create the cell format and remove formatting of the leading run
+ // if the entire string is equally formatted
+ if( rFormats.size() == 1 )
{
- OSL_ENSURE( nXclFont != EXC_FONT_NOTFOUND, "XclExpLabelCell::Init - leading font not found" );
- bool bForceLineBreak = mxText->IsWrapped();
- SetXFId( rRoot.GetXFBuffer().InsertWithFont( pPattern, ApiScriptType::WEAK, nXclFont, bForceLineBreak ) );
+ sal_uInt16 nXclFont = mxText->RemoveLeadingFont();
+ if( GetXFId() == EXC_XFID_NOTFOUND )
+ {
+ OSL_ENSURE( nXclFont != EXC_FONT_NOTFOUND, "XclExpLabelCell::Init - leading font not found" );
+ bool bForceLineBreak = mxText->IsWrapped();
+ SetXFId( rRoot.GetXFBuffer().InsertWithFont( pPattern, ApiScriptType::WEAK, nXclFont, bForceLineBreak ) );
+ }
}
// get auto-wrap attribute from cell format