sw/inc/shellio.hxx | 4 +- sw/qa/extras/txtexport/txtexport.cxx | 63 +++++++++++++++++++++++++++++++++++ sw/source/filter/ascii/ascatr.cxx | 4 +- sw/source/filter/writer/writer.cxx | 2 - 4 files changed, 69 insertions(+), 4 deletions(-)
New commits: commit 3563220f048da5e0e893b8ac7faf5e8f14889fa5 Author: Jan Holesovsky <ke...@collabora.com> Date: Tue Sep 12 13:29:46 2017 +0200 tdf#112191: Unit test. This was the hard part of the fix :-) Change-Id: Iae335c9d41d9b3420472b5d02113e2b42ab825da Reviewed-on: https://gerrit.libreoffice.org/42203 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Jan Holesovsky <ke...@collabora.com> diff --git a/sw/qa/extras/txtexport/txtexport.cxx b/sw/qa/extras/txtexport/txtexport.cxx index b9cd02bdf0b5..59e64d215872 100644 --- a/sw/qa/extras/txtexport/txtexport.cxx +++ b/sw/qa/extras/txtexport/txtexport.cxx @@ -11,8 +11,41 @@ #include <swmodule.hxx> #include <swdll.hxx> + +#include <shellio.hxx> +#include <unotextrange.hxx> #include <usrpref.hxx> +class TxtImportTest : public SwModelTestBase +{ +public: + TxtImportTest() : + SwModelTestBase("/sw/qa/extras/txtexport/data/", "Text") + {} + + // Export & assert part of the document (defined by SwPaM). + void assertExportedRange(const OString& aExpected, SwPaM& rPaM) + { + WriterRef rAsciiWriter; + GetASCWriter(aEmptyOUStr, OUString(), rAsciiWriter); + CPPUNIT_ASSERT(rAsciiWriter.is()); + + // no start char + rAsciiWriter->bUCS2_WithStartChar = false; + + SvMemoryStream aMemoryStream; + + SwWriter aWriter(aMemoryStream, rPaM); + ErrCode nError = aWriter.Write(rAsciiWriter); + CPPUNIT_ASSERT_EQUAL(ERRCODE_NONE, nError); + + const char* pData = static_cast<const char*>(aMemoryStream.GetData()); + OString aResult(pData, aMemoryStream.GetSize()); + + CPPUNIT_ASSERT_EQUAL(aExpected, aResult); + } +}; + class TxtExportTest : public SwModelTestBase { public: @@ -36,6 +69,7 @@ protected: } }; +#define DECLARE_TXTIMPORT_TEST(TestName, filename) DECLARE_SW_EXPORT_TEST(TestName, filename, nullptr, TxtImportTest) #define DECLARE_TXTEXPORT_TEST(TestName, filename) DECLARE_SW_EXPORT_TEST(TestName, filename, nullptr, TxtExportTest) DECLARE_TXTEXPORT_TEST(testBullets, "bullets.odt") @@ -71,6 +105,35 @@ DECLARE_TXTEXPORT_TEST(testBullets, "bullets.odt") CPPUNIT_ASSERT_EQUAL(aExpected, aData); } +DECLARE_TXTIMPORT_TEST(testTdf112191, "bullets.odt") +{ + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument *>(mxComponent.get()); + CPPUNIT_ASSERT(pTextDoc); + SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); + CPPUNIT_ASSERT(pDoc); + + // just the 5th paragraph - no bullet + uno::Reference<text::XTextRange> xPara(getParagraph(5)); + SwUnoInternalPaM aPaM(*pDoc); + bool bSuccess = sw::XTextRangeToSwPaM(aPaM, xPara); + CPPUNIT_ASSERT(bSuccess); + + assertExportedRange(OString("First bullet"), aPaM); + + // but when we extend to the next paragraph - now there are bullets + xPara = getParagraph(6); + SwUnoInternalPaM aPaM2(*pDoc); + bSuccess = sw::XTextRangeToSwPaM(aPaM2, xPara); + CPPUNIT_ASSERT(bSuccess); + + OUString aString = OStringToOUString( + " \xe2\x80\xa2 First bullet" SAL_NEWLINE_STRING + " \xe2\x80\xa2 Second bullet", RTL_TEXTENCODING_UTF8); + + SwPaM aPaM3(*aPaM2.GetMark(), *aPaM.GetPoint()); + assertExportedRange(OUStringToOString(aString, osl_getThreadTextEncoding()), aPaM3); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 9ead87264328beddddead1c7e878c2aee03e03af Author: Jan Holesovsky <ke...@collabora.com> Date: Tue Sep 12 13:28:32 2017 +0200 tdf#112191: Don't export bullets when only one paragraph is selected. Change-Id: Ibea54f857e78a850ea05643743884ae2157dae57 Reviewed-on: https://gerrit.libreoffice.org/42202 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Jan Holesovsky <ke...@collabora.com> diff --git a/sw/inc/shellio.hxx b/sw/inc/shellio.hxx index 1ebc33e4e0a8..92544413bdfa 100644 --- a/sw/inc/shellio.hxx +++ b/sw/inc/shellio.hxx @@ -370,7 +370,6 @@ class SW_DLLPUBLIC Writer protected: - SwPaM* pOrigPam; // Last Pam that has to be processed. const OUString* pOrigFileName; void ResetWriter(); @@ -390,6 +389,7 @@ protected: public: SwDoc* pDoc; + SwPaM* pOrigPam; // Last Pam that has to be processed. SwPaM* pCurPam; bool bWriteAll : 1; bool bShowProgress : 1; @@ -544,7 +544,7 @@ namespace SwReaderWriter } void GetRTFWriter( const OUString&, const OUString&, WriterRef& ); -void GetASCWriter( const OUString&, const OUString&, WriterRef& ); +SW_DLLPUBLIC void GetASCWriter(const OUString&, const OUString&, WriterRef&); void GetHTMLWriter( const OUString&, const OUString&, WriterRef& ); void GetXMLWriter( const OUString&, const OUString&, WriterRef& ); diff --git a/sw/source/filter/ascii/ascatr.cxx b/sw/source/filter/ascii/ascatr.cxx index 1a3f416ea91f..77b57e4f01dd 100644 --- a/sw/source/filter/ascii/ascatr.cxx +++ b/sw/source/filter/ascii/ascatr.cxx @@ -178,10 +178,12 @@ static Writer& OutASC_SwTextNode( Writer& rWrt, SwContentNode& rNode ) if( bLastNd ) nEnd = rWrt.pCurPam->GetMark()->nContent.GetIndex(); + bool bIsOneParagraph = rWrt.pOrigPam->Start()->nNode == rWrt.pOrigPam->End()->nNode; + SwASC_AttrIter aAttrIter( static_cast<SwASCWriter&>(rWrt), rNd, nStrPos ); const SwNumRule* pNumRule = rNd.GetNumRule(); - if (pNumRule && !nStrPos && rWrt.bExportPargraphNumbering) + if (pNumRule && !nStrPos && rWrt.bExportPargraphNumbering && !bIsOneParagraph) { bool bIsOutlineNumRule = pNumRule == rNd.GetDoc()->GetOutlineNumRule(); diff --git a/sw/source/filter/writer/writer.cxx b/sw/source/filter/writer/writer.cxx index 863a016a10bc..50cd3a3812c4 100644 --- a/sw/source/filter/writer/writer.cxx +++ b/sw/source/filter/writer/writer.cxx @@ -116,7 +116,7 @@ void Writer_Impl::InsertBkmk(const ::sw::mark::IMark& rBkmk) Writer::Writer() : m_pImpl(o3tl::make_unique<Writer_Impl>()) - , pOrigPam(nullptr), pOrigFileName(nullptr), pDoc(nullptr), pCurPam(nullptr) + , pOrigFileName(nullptr), pDoc(nullptr), pOrigPam(nullptr), pCurPam(nullptr) { bWriteAll = bShowProgress = bUCS2_WithStartChar = true; bASCII_NoLastLineEnd = bASCII_ParaAsBlanc = bASCII_ParaAsCR = _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits