diff options
author | Hossein <hossein@libreoffice.org> | 2021-07-19 13:03:42 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2021-07-20 11:21:34 +0200 |
commit | bda4d7a7c3fcc259e023f568606be5dcba818db9 (patch) | |
tree | 7dceaa16f1345f25d52556ff588476ef20c1067b /sw | |
parent | 1738f106bd73fa2cf153905fc28b198d6f0cf211 (diff) |
tdf#123321 Fix DOC/DOCX export bug which made some lines disappear
* Fix the wrong calculation of SdrPathObj (line) extent while exporting
to .doc and .docx formats. This resolves tdf#123321 which cause some
lines to disappear after save and reload. This fix does not break
tdf#91687
* added tests to make sure this does not happen again, based on the
.doc file provided in Bugzilla
* Loading the bad exported file in MS Word is OK, but it does not work
in LibreOffice, and some of the lines will be hidden. This needs
additional work.
The regression came from d72e0cadceb0b43928a9b4f18d75c9d5d30afdda
Change-Id: Ic5a7af4d29df741204c50590728542e674ee9f91
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119116
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'sw')
-rw-r--r-- | sw/qa/extras/ww8export/data/shapes-line-ellipse.doc | bin | 0 -> 40448 bytes | |||
-rw-r--r-- | sw/qa/extras/ww8export/ww8export2.cxx | 30 |
2 files changed, 30 insertions, 0 deletions
diff --git a/sw/qa/extras/ww8export/data/shapes-line-ellipse.doc b/sw/qa/extras/ww8export/data/shapes-line-ellipse.doc Binary files differnew file mode 100644 index 000000000000..184881c00a6d --- /dev/null +++ b/sw/qa/extras/ww8export/data/shapes-line-ellipse.doc diff --git a/sw/qa/extras/ww8export/ww8export2.cxx b/sw/qa/extras/ww8export/ww8export2.cxx index 3dc101b6f626..bf751ee46426 100644 --- a/sw/qa/extras/ww8export/ww8export2.cxx +++ b/sw/qa/extras/ww8export/ww8export2.cxx @@ -414,6 +414,36 @@ DECLARE_WW8EXPORT_TEST(testTdf108072, "tdf108072.doc") CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xTableRows->getByIndex(0), "IsSplitAllowed")); } +DECLARE_WW8EXPORT_TEST(testTdf123321, "shapes-line-ellipse.doc") +{ + // These are the 3 lines in which 1st and 3rd one were disappearing before + uno::Reference<drawing::XShape> l1 = getShape(7); + uno::Reference<drawing::XShape> l2 = getShape(8); + uno::Reference<drawing::XShape> l3 = getShape(9); + + // first line (smallest) + // Fails without the fix: Expected: 423, Actual: 2 + CPPUNIT_ASSERT_EQUAL(sal_Int32(423), l1->getSize().Height); + // Fails without the fix: Expected: 0, Actual: 2 + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), l1->getSize().Width); + CPPUNIT_ASSERT_EQUAL(sal_Int32(7908), l1->getPosition().X); + CPPUNIT_ASSERT_EQUAL(sal_Int32(37), l1->getPosition().Y); + + // second line (larger) + CPPUNIT_ASSERT_EQUAL(sal_Int32(2542), l2->getSize().Height); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), l2->getSize().Width); + CPPUNIT_ASSERT_EQUAL(sal_Int32(7916), l2->getPosition().X); + CPPUNIT_ASSERT_EQUAL(sal_Int32(289), l2->getPosition().Y); + + // third line (largest) + // Fails without the fix: Expected: 7027, Actual: 2 + CPPUNIT_ASSERT_EQUAL(sal_Int32(7027), l3->getSize().Height); + // Fails without the fix: Expected: 0, Actual: 2 + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), l3->getSize().Width); + CPPUNIT_ASSERT_EQUAL(sal_Int32(7911), l3->getPosition().X); + CPPUNIT_ASSERT_EQUAL(sal_Int32(231), l3->getPosition().Y); +} + DECLARE_WW8EXPORT_TEST(testTdf91687, "tdf91687.doc") { // Exported Watermarks were resized |