diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-11-07 09:02:11 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-11-07 10:42:03 +0100 |
commit | 5f4a3e7bd77c3294ef85eebec17ed2d624dc3a2d (patch) | |
tree | 7f0ae3e18850cd5451d366ebf9efeec4e46ab428 | |
parent | ded02dafbce173f2f1a23e10deee8002f73317b2 (diff) |
tdf#113550 RTF import: fix incorrect text indent
Left indent was set to non-zero in the style, but direct formatting set
it back to zero. Teach deduplication to remove the
NS_ooxml::LN_CT_PPrBase_ind SPRM itself in case the last attribute was
removed.
Change-Id: I01b202f0241b02816b2b392326737b1150caffc2
Reviewed-on: https://gerrit.libreoffice.org/44385
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
-rw-r--r-- | solenv/clang-format/blacklist | 2 | ||||
-rw-r--r-- | sw/qa/extras/rtfexport/data/tdf113550.rtf | 17 | ||||
-rw-r--r-- | sw/qa/extras/rtfexport/rtfexport.cxx | 10 | ||||
-rw-r--r-- | sw/source/filter/ww8/docxsdrexport.cxx | 8 | ||||
-rw-r--r-- | sw/source/filter/ww8/docxsdrexport.hxx | 8 | ||||
-rw-r--r-- | vcl/inc/pdfread.hxx | 4 | ||||
-rw-r--r-- | vcl/source/filter/ipdf/pdfread.cxx | 6 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfsprm.cxx | 3 | ||||
-rw-r--r-- | xmlsecurity/qa/unit/signing/signing.cxx | 6 |
9 files changed, 47 insertions, 17 deletions
diff --git a/solenv/clang-format/blacklist b/solenv/clang-format/blacklist index f08327bdc2e0..1b4b04676b0b 100644 --- a/solenv/clang-format/blacklist +++ b/solenv/clang-format/blacklist @@ -17753,6 +17753,7 @@ vcl/inc/outdev.h vcl/inc/outdevstatestack.hxx vcl/inc/pch/precompiled_vcl.cxx vcl/inc/pch/precompiled_vcl.hxx +vcl/inc/pdfread.hxx vcl/inc/print.h vcl/inc/printdlg.hxx vcl/inc/printerinfomanager.hxx @@ -18201,7 +18202,6 @@ vcl/source/filter/igif/gifread.cxx vcl/source/filter/igif/gifread.hxx vcl/source/filter/ipdf/pdfdocument.cxx vcl/source/filter/ipdf/pdfread.cxx -vcl/source/filter/ipdf/pdfread.hxx vcl/source/filter/ixbm/xbmread.cxx vcl/source/filter/ixbm/xbmread.hxx vcl/source/filter/ixpm/rgbtable.hxx diff --git a/sw/qa/extras/rtfexport/data/tdf113550.rtf b/sw/qa/extras/rtfexport/data/tdf113550.rtf new file mode 100644 index 000000000000..ef89c9af5df6 --- /dev/null +++ b/sw/qa/extras/rtfexport/data/tdf113550.rtf @@ -0,0 +1,17 @@ +{\rtf1\adeflang1037\ansi\ansicpg1252\uc1\adeff1\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0 +{\fonttbl +{\f0\fbidi \froman\fcharset238\fprq2 Times New Roman;} +} +{\stylesheet +{\ql \li0\ri0 Normal;} +{\s22\ql \li0\ri0 S22;} +{\s442\ql \li1418\ri0 \sbasedon22 S442;} +} +\paperw12240\paperh15840\margl1134\margr1134\margt1134\margb1410 +\trowd \cellx10008 +\pard\plain \ltrpar\s442\ql \li0\ri0\intbl +hello\par +\pard\cell\row +} +\pard\plain\par +} diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx index 1d75996fcdda..ff6d400a41d6 100644 --- a/sw/qa/extras/rtfexport/rtfexport.cxx +++ b/sw/qa/extras/rtfexport/rtfexport.cxx @@ -1204,6 +1204,16 @@ DECLARE_RTFEXPORT_TEST(testTdf104085, "tdf104085.rtf") CPPUNIT_FAIL("no BulletChar property"); } +DECLARE_RTFEXPORT_TEST(testTdf113550, "tdf113550.rtf") +{ + uno::Reference<text::XTextTable> xTable(getParagraphOrTable(1), uno::UNO_QUERY); + uno::Reference<text::XTextRange> xCell(xTable->getCellByName("A1"), uno::UNO_QUERY); + uno::Reference<text::XTextRange> xParagraph = getParagraphOfText(1, xCell->getText()); + // This was 2501, 0 as direct formatting was ignored on the paragraph (and + // the style had this larger value). + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), getProperty<sal_Int32>(xParagraph, "ParaLeftMargin")); +} + DECLARE_RTFEXPORT_TEST(testLeveljcCenter, "leveljc-center.rtf") { // Tests that \leveljc1 is mapped to Adjust=Center for a numbering rule. diff --git a/sw/source/filter/ww8/docxsdrexport.cxx b/sw/source/filter/ww8/docxsdrexport.cxx index aeb544a679b5..46671e083558 100644 --- a/sw/source/filter/ww8/docxsdrexport.cxx +++ b/sw/source/filter/ww8/docxsdrexport.cxx @@ -112,7 +112,7 @@ void lclMovePositionWithRotation(awt::Point& aPos, const Size& rSize, sal_Int64 } -ExportDataSaveRestore::ExportDataSaveRestore(DocxExport& rExport, sal_uLong nStt, sal_uLong nEnd, ww8::Frame const * pParentFrame) +ExportDataSaveRestore::ExportDataSaveRestore(DocxExport& rExport, sal_uLong nStt, sal_uLong nEnd, ww8::Frame const* pParentFrame) : m_rExport(rExport) { m_rExport.SaveData(nStt, nEnd); @@ -1291,7 +1291,7 @@ void DocxSdrExport::writeDiagram(const SdrObject* sdrObject, const SwFrameFormat } } -void DocxSdrExport::writeOnlyTextOfFrame(ww8::Frame const * pParentFrame) +void DocxSdrExport::writeOnlyTextOfFrame(ww8::Frame const* pParentFrame) { const SwFrameFormat& rFrameFormat = pParentFrame->GetFrameFormat(); const SwNodeIndex* pNodeIndex = rFrameFormat.GetContent().GetContentIdx(); @@ -1357,7 +1357,7 @@ void DocxSdrExport::writeBoxItemLine(const SvxBoxItem& rBox) pFS->endElementNS(XML_a, XML_ln); } -void DocxSdrExport::writeDMLTextFrame(ww8::Frame const * pParentFrame, int nAnchorId, bool bTextBoxOnly) +void DocxSdrExport::writeDMLTextFrame(ww8::Frame const* pParentFrame, int nAnchorId, bool bTextBoxOnly) { bool bDMLAndVMLDrawingOpen = m_pImpl->m_bDMLAndVMLDrawingOpen; m_pImpl->m_bDMLAndVMLDrawingOpen = true; @@ -1634,7 +1634,7 @@ void DocxSdrExport::writeDMLTextFrame(ww8::Frame const * pParentFrame, int nAnch m_pImpl->m_bDMLAndVMLDrawingOpen = bDMLAndVMLDrawingOpen; } -void DocxSdrExport::writeVMLTextFrame(ww8::Frame const * pParentFrame, bool bTextBoxOnly) +void DocxSdrExport::writeVMLTextFrame(ww8::Frame const* pParentFrame, bool bTextBoxOnly) { bool bDMLAndVMLDrawingOpen = m_pImpl->m_bDMLAndVMLDrawingOpen; m_pImpl->m_bDMLAndVMLDrawingOpen = true; diff --git a/sw/source/filter/ww8/docxsdrexport.hxx b/sw/source/filter/ww8/docxsdrexport.hxx index 86bf9bca80ad..85bc1239069f 100644 --- a/sw/source/filter/ww8/docxsdrexport.hxx +++ b/sw/source/filter/ww8/docxsdrexport.hxx @@ -46,7 +46,7 @@ class ExportDataSaveRestore private: DocxExport& m_rExport; public: - ExportDataSaveRestore(DocxExport& rExport, sal_uLong nStt, sal_uLong nEnd, ww8::Frame const * pParentFrame); + ExportDataSaveRestore(DocxExport& rExport, sal_uLong nStt, sal_uLong nEnd, ww8::Frame const* pParentFrame); ~ExportDataSaveRestore(); }; @@ -101,13 +101,13 @@ public: const css::uno::Reference<css::io::XOutputStream>& xOutStream, const OUString& sGrabBagProperyName, int nAnchorId); /// Writes text frame in DML format. - void writeDMLTextFrame(ww8::Frame const * pParentFrame, int nAnchorId, bool bTextBoxOnly = false); + void writeDMLTextFrame(ww8::Frame const* pParentFrame, int nAnchorId, bool bTextBoxOnly = false); /// Writes text frame in VML format. - void writeVMLTextFrame(ww8::Frame const * pParentFrame, bool bTextBoxOnly = false); + void writeVMLTextFrame(ww8::Frame const* pParentFrame, bool bTextBoxOnly = false); /// Is this a standalone TextFrame, or used as a TextBox of a shape? static bool isTextBox(const SwFrameFormat& rFrameFormat); /// Writes text from Textbox for <w:framePr> - void writeOnlyTextOfFrame(ww8::Frame const * pParentFrame); + void writeOnlyTextOfFrame(ww8::Frame const* pParentFrame); /// Writes the drawingML <a:ln> markup of a box item. void writeBoxItemLine(const SvxBoxItem& rBox); }; diff --git a/vcl/inc/pdfread.hxx b/vcl/inc/pdfread.hxx index e873c49a1cdd..d3bcac84a29a 100644 --- a/vcl/inc/pdfread.hxx +++ b/vcl/inc/pdfread.hxx @@ -17,8 +17,8 @@ namespace vcl { /// Imports a PDF stream into rGraphic as a GDIMetaFile. -VCL_DLLPUBLIC bool ImportPDF(SvStream& rStream, Bitmap &rBitmap, - css::uno::Sequence<sal_Int8> &rPdfFata, +VCL_DLLPUBLIC bool ImportPDF(SvStream& rStream, Bitmap& rBitmap, + css::uno::Sequence<sal_Int8>& rPdfFata, sal_uInt64 nPos = STREAM_SEEK_TO_BEGIN, sal_uInt64 nSize = STREAM_SEEK_TO_END); VCL_DLLPUBLIC bool ImportPDF(SvStream& rStream, Graphic& rGraphic); diff --git a/vcl/source/filter/ipdf/pdfread.cxx b/vcl/source/filter/ipdf/pdfread.cxx index 59a7b1f80469..07e9d8994cd7 100644 --- a/vcl/source/filter/ipdf/pdfread.cxx +++ b/vcl/source/filter/ipdf/pdfread.cxx @@ -142,7 +142,7 @@ bool getCompatibleStream(SvStream& rInStream, SvStream& rOutStream, sal_uInt64 nPos, sal_uInt64 nSize) { bool bCompatible = isCompatible(rInStream, nPos, nSize); - rInStream.Seek( nPos ); + rInStream.Seek(nPos); if (bCompatible) // Not converting. rOutStream.WriteStream(rInStream, nSize); @@ -205,8 +205,8 @@ bool getCompatibleStream(SvStream& rInStream, SvStream& rOutStream, namespace vcl { -bool ImportPDF(SvStream& rStream, Bitmap &rBitmap, - css::uno::Sequence<sal_Int8> &rPdfData, +bool ImportPDF(SvStream& rStream, Bitmap& rBitmap, + css::uno::Sequence<sal_Int8>& rPdfData, sal_uInt64 nPos, sal_uInt64 nSize) { // Get the preview of the first page. diff --git a/writerfilter/source/rtftok/rtfsprm.cxx b/writerfilter/source/rtftok/rtfsprm.cxx index 18c24d200b34..ba1a633c5abf 100644 --- a/writerfilter/source/rtftok/rtfsprm.cxx +++ b/writerfilter/source/rtftok/rtfsprm.cxx @@ -185,6 +185,9 @@ static bool isSPRMChildrenExpected(Id nId) SAL_FALLTHROUGH; case NS_ooxml::LN_CT_PrBase_shd: // Expected children are NS_ooxml::LN_CT_Shd_*. + SAL_FALLTHROUGH; + case NS_ooxml::LN_CT_PPrBase_ind: + // Expected children are NS_ooxml::LN_CT_Ind_*. return true; default: diff --git a/xmlsecurity/qa/unit/signing/signing.cxx b/xmlsecurity/qa/unit/signing/signing.cxx index 4724f56f234a..4d2419cf6e41 100644 --- a/xmlsecurity/qa/unit/signing/signing.cxx +++ b/xmlsecurity/qa/unit/signing/signing.cxx @@ -640,11 +640,11 @@ void SigningTest::testSignatureLineImages() // Given: A document (docx) with a signature line and a valid signature uno::Reference< security::XDocumentDigitalSignatures > xSignatures( security::DocumentDigitalSignatures::createWithVersion( - comphelper::getProcessComponentContext(), "1.2" ) ); + comphelper::getProcessComponentContext(), "1.2")); uno::Reference<embed::XStorage> xStorage = comphelper::OStorageHelper::GetStorageOfFormatFromURL( - ZIP_STORAGE_FORMAT_STRING, m_directories.getURLFromSrc(DATA_DIRECTORY) + "signatureline.docx", - embed::ElementModes::READ); + ZIP_STORAGE_FORMAT_STRING, m_directories.getURLFromSrc(DATA_DIRECTORY) + "signatureline.docx", + embed::ElementModes::READ); CPPUNIT_ASSERT(xStorage.is()); uno::Sequence< security::DocumentSignatureInformation > xSignatureInfo = |