sw/qa/extras/ww8export/data/tdf133504_wrapNotBeside.doc |binary sw/qa/extras/ww8export/ww8export.cxx | 8 +++++ sw/source/filter/ww8/ww8par6.cxx | 24 ++++++++++++---- 3 files changed, 27 insertions(+), 5 deletions(-)
New commits: commit f1bf753e52e1c1150de96ca3073cbaef76f10b50 Author: Justin Luth <jl...@mail.com> AuthorDate: Thu May 25 12:19:16 2023 -0400 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Thu Oct 5 08:28:08 2023 +0200 tdf#133504 doc import: set the correct wrap Umm, I'm amazed that 1.) this hasn't been a bigger, burning issue, and 2.) that no one has ever investigated or fixed this. It was super easy. The code is mind boggling though. "Auto" and "Not Beside" are NONE, but around, none, tight, and through are "Optimal"? How about auto is optimal, around/tight are parallel, none is none, and through is through. Lets try that and see how it works. Prior patchsets submitted searched for existing examples. They suggest that MS Word's UI only allows for notBeside and around, but I kept the others there just in case something can trigger them. Change-Id: I893dfd66737bcc3148b48c68cb6df778d3f528c8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152286 Reviewed-by: Justin Luth <jl...@mail.com> Tested-by: Jenkins Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157558 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Miklos Vajna <vmik...@collabora.com> diff --git a/sw/qa/extras/ww8export/data/tdf133504_wrapNotBeside.doc b/sw/qa/extras/ww8export/data/tdf133504_wrapNotBeside.doc new file mode 100644 index 000000000000..865023e34489 Binary files /dev/null and b/sw/qa/extras/ww8export/data/tdf133504_wrapNotBeside.doc differ diff --git a/sw/qa/extras/ww8export/ww8export.cxx b/sw/qa/extras/ww8export/ww8export.cxx index f4274a629d39..52bda1efeb55 100644 --- a/sw/qa/extras/ww8export/ww8export.cxx +++ b/sw/qa/extras/ww8export/ww8export.cxx @@ -28,6 +28,7 @@ #include <com/sun/star/table/TableBorder.hpp> #include <com/sun/star/table/TableBorder2.hpp> #include <com/sun/star/text/GraphicCrop.hpp> +#include <com/sun/star/text/WrapTextMode.hpp> #include <com/sun/star/text/XFormField.hpp> #include <com/sun/star/text/XTextField.hpp> #include <com/sun/star/text/XTextFieldsSupplier.hpp> @@ -577,6 +578,13 @@ DECLARE_WW8EXPORT_TEST(testBnc787942, "bnc787942.doc") // this is on page 1 in Word parseDump("/root/page[1]/body/txt[4]/anchored"); + + CPPUNIT_ASSERT_EQUAL(text::WrapTextMode_PARALLEL, getProperty<text::WrapTextMode>(getShape(1), "Surround")); +} + +DECLARE_WW8EXPORT_TEST(testTdf133504_wrapNotBeside, "tdf133504_wrapNotBeside.doc") +{ + CPPUNIT_ASSERT_EQUAL(text::WrapTextMode_NONE, getProperty<text::WrapTextMode>(getShape(1), "Surround")); } DECLARE_WW8EXPORT_TEST(testLayoutHanging, "fdo68967.doc") diff --git a/sw/source/filter/ww8/ww8par6.cxx b/sw/source/filter/ww8/ww8par6.cxx index 8047f92c6e71..607e06ac0724 100644 --- a/sw/source/filter/ww8/ww8par6.cxx +++ b/sw/source/filter/ww8/ww8par6.cxx @@ -1912,7 +1912,6 @@ eHRel(text::RelOrientation::PAGE_FRAME), eVRel(text::RelOrientation::FRAME), eVAlign(text::VertOrientation::NONE), eHAlign(text::HoriOrientation::NONE), -eSurround(( rWW.nPWr > 1 ) ? css::text::WrapTextMode_DYNAMIC : css::text::WrapTextMode_NONE), nXBind(( rWW.nTPc & 0xc0 ) >> 6), nYBind(( rWW.nTPc & 0x30 ) >> 4), nNewNetWidth(MINFLY), @@ -1920,10 +1919,25 @@ nLineSpace(0), bAutoWidth(false), bTogglePos(false) { - //#i119466 mapping "Around" wrap setting to "Parallel" for table - const bool bIsTable = rIo.m_xPlcxMan->HasParaSprm(NS_sprm::PFInTable::val).pSprm; - if (bIsTable && rWW.nPWr == 2) - eSurround = css::text::WrapTextMode_PARALLEL; + switch(rWW.nPWr) + { + case 0: // ST_Wrap: auto + eSurround = css::text::WrapTextMode_DYNAMIC; + break; + case 1: // ST_Wrap: notBeside + case 3: // ST_Wrap: none + eSurround = css::text::WrapTextMode_NONE; + break; + case 2: // ST_Wrap: around + case 4: // ST_Wrap: tight + eSurround = css::text::WrapTextMode_PARALLEL; + break; + case 5: // St_Wrap: through + eSurround = css::text::WrapTextMode_THROUGH; + break; + default: + eSurround = css::text::WrapTextMode_DYNAMIC; + } /* #95905#, #83307# seems to have gone away now, so re-enable parallel