summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKatarina Behrens <Katarina.Behrens@cib.de>2015-11-05 17:57:07 +0100
committerDavid Tardon <dtardon@redhat.com>2016-02-18 07:43:12 +0000
commit14279955b467241a70b61f993c334757c2b4a756 (patch)
treeafd8fe84f91732d5133ffe2b1a98bface2aadbdf
parentd2ef084eb0e26b5ee18133269249e7a80efb23d6 (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> Related tdf#92296, tdf#90812: Make this test more strict i.e. not only make sure that rPr is there, but also test the text chunk has the right font colour ( it went off-by-one in regression caused by the fix of tdf#90812 ) Change-Id: I3788a845393686ed621743e117b7eb439e38e0b3 Reviewed-on: https://gerrit.libreoffice.org/22420 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: David Tardon <dtardon@redhat.com>
-rw-r--r--sc/qa/unit/subsequent_export-test.cxx3
-rw-r--r--sc/source/filter/excel/xestring.cxx3
-rw-r--r--sc/source/filter/excel/xetable.cxx17
3 files changed, 14 insertions, 9 deletions
diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx
index b1db15933e58..eb0865e2e7d6 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -2640,7 +2640,8 @@ void ScExportTest::testSheetRunParagraphProperty()
xmlDocPtr pDoc = XPathHelper::parseExport(&(*xDocSh), m_xSFactory, "xl/sharedStrings.xml", XLSX);
CPPUNIT_ASSERT(pDoc);
- assertXPath(pDoc, "/x:sst/x:si/x:r[1]/x:rPr[1]", 1);
+ OUString aColor = getXPath(pDoc, "/x:sst/x:si/x:r[1]/x:rPr[1]/x:color", "rgb");
+ CPPUNIT_ASSERT_EQUAL(OUString("FFFF0000"), aColor);
xDocSh->DoClose();
}
diff --git a/sc/source/filter/excel/xestring.cxx b/sc/source/filter/excel/xestring.cxx
index 0e1a1279752b..2e716b09ce8d 100644
--- a/sc/source/filter/excel/xestring.cxx
+++ b/sc/source/filter/excel/xestring.cxx
@@ -427,10 +427,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 8422ef63da9d..21f0aa990ff7 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