sw/qa/extras/rtfexport/data/tdf158586_lostFrame.rtf | 17 +++++++++++++++++ sw/qa/extras/rtfexport/data/tdf158586_pageBreak0B.rtf | 15 +++++++++++++++ sw/qa/extras/rtfexport/rtfexport8.cxx | 17 +++++++++++++++++ writerfilter/source/rtftok/rtfdocumentimpl.cxx | 4 ++++ 4 files changed, 53 insertions(+)
New commits: commit 3e3673313ddd6cec629cdaf6a2b22f508003960d Author: Justin Luth <justin.l...@collabora.com> AuthorDate: Wed Dec 13 20:25:53 2023 -0500 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Tue Dec 19 16:09:52 2023 +0100 partial revert tdf#153178 writerfilter: do not create text frame spuriously2 If HoriAlign/VertAlign are defined, that is enough to create a frame. This fixes mstahl's 7.6.4 regression originating with commit 4e2f2489c4c7436f8b3a21a530bc625cbef4e365 make CppunitTest_sw_rtfexport8 CPPUNIT_TEST_NAME=testTdf158586_lostFrame Change-Id: Ibb639673cebcd8d5ec79f5551a5703caf948e0d8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160744 Reviewed-by: Justin Luth <jl...@mail.com> Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmik...@collabora.com> Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160982 diff --git a/sw/qa/extras/rtfexport/data/tdf158586_lostFrame.rtf b/sw/qa/extras/rtfexport/data/tdf158586_lostFrame.rtf new file mode 100644 index 000000000000..cedfd81a1dd8 --- /dev/null +++ b/sw/qa/extras/rtfexport/data/tdf158586_lostFrame.rtf @@ -0,0 +1,17 @@ +{\rtf1 + +\paperw8419\paperh5953 + +\spltpgpar + +\ltrpar \sectd + +\pard\plain \posxc\posyc First page textbox \par +\pard 1st page + + +\page \sect \sectd \sbknone + +\pard\plain 2nd page +\par +} diff --git a/sw/qa/extras/rtfexport/rtfexport8.cxx b/sw/qa/extras/rtfexport/rtfexport8.cxx index bcba0a9beb97..f8d800380cba 100644 --- a/sw/qa/extras/rtfexport/rtfexport8.cxx +++ b/sw/qa/extras/rtfexport/rtfexport8.cxx @@ -73,6 +73,17 @@ DECLARE_RTFEXPORT_TEST(testTdf158586_1, "tdf158586_pageBreak1.rtf") // assertXPathContent(pLayout, "//page[2]/body/txt"_ostr, "Second page"); } +DECLARE_RTFEXPORT_TEST(testTdf158586_lostFrame, "tdf158586_lostFrame.rtf") +{ + // The anchor and align properties are sufficient to define a frame + const auto& pLayout = parseLayoutDump(); + assertXPath(pLayout, "//anchored"_ostr, 1); + assertXPathContent(pLayout, "//page[1]/body//txt"_ostr, "1st page"); + // assertXPathContent(pLayout, "//page[2]/body//txt"_ostr, "2nd page"); + + // CPPUNIT_ASSERT_EQUAL(2, getPages()); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index 0abbccaed0e3..f760afd6cc23 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -4010,7 +4010,9 @@ bool RTFFrame::hasProperties() const { // tdf#153178 \dxfrtext \dfrmtxtx \dfrmtxty \wrapdefault do *not* create frame return m_nX != 0 || m_nY != 0 || m_nW != 0 || m_nH != 0 + || (m_nHoriAlign && m_nHoriAlign != NS_ooxml::LN_Value_doc_ST_XAlign_left) || (m_nHoriAnchor && m_nHoriAnchor != NS_ooxml::LN_Value_doc_ST_HAnchor_text) + || (m_nVertAlign && m_nVertAlign != NS_ooxml::LN_Value_doc_ST_YAlign_inline) || (m_nVertAnchor && m_nVertAnchor != NS_ooxml::LN_Value_doc_ST_VAnchor_margin) || (m_oWrap && *m_oWrap != NS_ooxml::LN_Value_doc_ST_Wrap_auto); } commit 7bcc477bc98bbcc4ee0e12e812e17aaa9cfd8803 Author: Justin Luth <justin.l...@collabora.com> AuthorDate: Wed Dec 13 20:07:20 2023 -0500 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Tue Dec 19 16:09:44 2023 +0100 partial revert tdf#153178 writerfilter: do not create text frame spuriously If HoriAnchor/VertAnchor are assigned, that is enough to create a frame. make CppunitTest_sw_rtfexport8 CPPUNIT_TEST_NAME=testTdf158586_0B Note: because of a regression, this was already one page before this commit, so need to go back to the time of the reverted patch. Change-Id: Iddbe1cc4ba6d6e95e2d977a227ae6cab5271007e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160743 Reviewed-by: Justin Luth <jl...@mail.com> Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmik...@collabora.com> Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160981 diff --git a/sw/qa/extras/rtfexport/data/tdf158586_pageBreak0B.rtf b/sw/qa/extras/rtfexport/data/tdf158586_pageBreak0B.rtf new file mode 100644 index 000000000000..587e90500505 --- /dev/null +++ b/sw/qa/extras/rtfexport/data/tdf158586_pageBreak0B.rtf @@ -0,0 +1,15 @@ +{\rtf1 + +\paperw8419\paperh5953 + +\spltpgpar + +\ltrpar \sectd + +\pard\plain \phpg\pvpg + +\page \sect \sectd \sbknone + +\pard\plain First page +\par +} diff --git a/sw/qa/extras/rtfexport/rtfexport8.cxx b/sw/qa/extras/rtfexport/rtfexport8.cxx index 80309ff9b65e..bcba0a9beb97 100644 --- a/sw/qa/extras/rtfexport/rtfexport8.cxx +++ b/sw/qa/extras/rtfexport/rtfexport8.cxx @@ -56,6 +56,12 @@ DECLARE_RTFEXPORT_TEST(testTdf158586_0, "tdf158586_pageBreak0.rtf") // assertXPathContent(pLayout, "//page[1]/body/txt"_ostr, "First page");} } +DECLARE_RTFEXPORT_TEST(testTdf158586_0B, "tdf158586_pageBreak0B.rtf") +{ + // The specified page break must be lost because it is in a text frame + CPPUNIT_ASSERT_EQUAL(1, getPages()); +} + DECLARE_RTFEXPORT_TEST(testTdf158586_1, "tdf158586_pageBreak1.rtf") { // None of the specified text frame settings initiates a real text frame - page break not lost diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index 1a4f33f28df8..0abbccaed0e3 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -4010,6 +4010,8 @@ bool RTFFrame::hasProperties() const { // tdf#153178 \dxfrtext \dfrmtxtx \dfrmtxty \wrapdefault do *not* create frame return m_nX != 0 || m_nY != 0 || m_nW != 0 || m_nH != 0 + || (m_nHoriAnchor && m_nHoriAnchor != NS_ooxml::LN_Value_doc_ST_HAnchor_text) + || (m_nVertAnchor && m_nVertAnchor != NS_ooxml::LN_Value_doc_ST_VAnchor_margin) || (m_oWrap && *m_oWrap != NS_ooxml::LN_Value_doc_ST_Wrap_auto); }