Kaydet (Commit) fff019de authored tarafından Miklos Vajna's avatar Miklos Vajna

MSWordExportBase: ignore empty annotation marks

Change-Id: I182700a7b74aa65a1eeb39ff702f068a10dd3346
üst 902564bf
......@@ -231,6 +231,28 @@ DECLARE_OOXMLEXPORT_TEST(testShapeInFloattable, "shape-in-floattable.docx")
}
}
DECLARE_OOXMLEXPORT_TEST(testEmptyAnnotationMark, "empty-annotation-mark.docx")
{
if (mbExported)
{
// Delete the word that is commented, and save again.
uno::Reference<text::XTextRange> xRun = getRun(getParagraph(1), 3);
CPPUNIT_ASSERT_EQUAL(OUString("with"), xRun->getString());
xRun->setString("");
uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY);
xStorable->store();
// Then inspect the OOXML markup of the modified document model.
xmlDocPtr pXmlDoc = parseExport("word/document.xml");
// There were two commentReference nodes.
assertXPath(pXmlDoc, "//w:commentReference", "id", "0");
// Empty comment range was not ignored on export, this was 1.
assertXPath(pXmlDoc, "//w:commentRangeStart", 0);
// Ditto.
assertXPath(pXmlDoc, "//w:commentRangeEnd", 0);
}
}
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -1806,7 +1806,12 @@ bool MSWordExportBase::GetAnnotationMarks( const SwTxtNode& rNd, sal_Int32 nStt,
bool bIsStartOk = ( pMark->GetMarkStart().nNode == nNd ) && ( nBStart >= nStt ) && ( nBStart <= nEnd );
bool bIsEndOk = ( pMark->GetMarkEnd().nNode == nNd ) && ( nBEnd >= nStt ) && ( nBEnd <= nEnd );
if ( bIsStartOk || bIsEndOk )
// Annotation marks always have at least one character: the anchor
// point of the comment field. In this case Word wants only the
// comment field, so ignore the annotation mark itself.
bool bSingleChar = pMark->GetMarkStart().nNode == pMark->GetMarkEnd().nNode && nBStart + 1 == nBEnd;
if ( ( bIsStartOk || bIsEndOk ) && !bSingleChar )
{
rArr.push_back( pMark );
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment