diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2020-07-31 11:04:02 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2020-08-05 08:54:56 +0200 |
commit | a7e1a2c2bb6b02a41b9eb1d2dccbbd28e0eac49b (patch) | |
tree | df24b4c82a8d76ba809b31a33bde36234cc05f0f /sd | |
parent | 92262649a0511146a21a5171b8ff33d4994d75b3 (diff) |
oox smartart: consider rules when scaling in linear layout
The bugdoc has an arrow shape which is 100% wide, and there are multiple
shapes before it, which also have a 100% wide constraint. The reason
PowerPoint scales down the shapes (but not the arrow) is because rules
declare it should happen this way.
So start taking rules into account in linear layouts.
(cherry picked from commit 0024c48b4822062995effed7db4f1281196384bb)
Conflicts:
sd/qa/unit/import-tests-smartart.cxx
Change-Id: I352443277e88be0eb711659489587127727a258f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100110
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'sd')
-rw-r--r-- | sd/qa/unit/data/pptx/smartart-linear-rule.pptx | bin | 0 -> 43353 bytes | |||
-rw-r--r-- | sd/qa/unit/import-tests-smartart.cxx | 19 |
2 files changed, 19 insertions, 0 deletions
diff --git a/sd/qa/unit/data/pptx/smartart-linear-rule.pptx b/sd/qa/unit/data/pptx/smartart-linear-rule.pptx Binary files differnew file mode 100644 index 000000000000..f5fbb5c87a54 --- /dev/null +++ b/sd/qa/unit/data/pptx/smartart-linear-rule.pptx diff --git a/sd/qa/unit/import-tests-smartart.cxx b/sd/qa/unit/import-tests-smartart.cxx index 4b110f740e11..eba7aa4e748b 100644 --- a/sd/qa/unit/import-tests-smartart.cxx +++ b/sd/qa/unit/import-tests-smartart.cxx @@ -106,6 +106,7 @@ public: void testDataFollow(); void testOrgChart2(); void testFillColorList(); + void testLinearRule(); CPPUNIT_TEST_SUITE(SdImportTestSmartArt); @@ -151,6 +152,7 @@ public: CPPUNIT_TEST(testDataFollow); CPPUNIT_TEST(testOrgChart2); CPPUNIT_TEST(testFillColorList); + CPPUNIT_TEST(testLinearRule); CPPUNIT_TEST_SUITE_END(); }; @@ -1491,6 +1493,23 @@ void SdImportTestSmartArt::testFillColorList() xDocShRef->DoClose(); } +void SdImportTestSmartArt::testLinearRule() +{ + sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/smartart-linear-rule.pptx"), PPTX); + + uno::Reference<drawing::XShape> xGroup(getShapeFromPage(0, 0, xDocShRef), uno::UNO_QUERY); + // Last child, then again last child. + uno::Reference<drawing::XShape> xShape = getChildShape(getChildShape(xGroup, 1), 3); + + // Without the accompanying fix in place, this test would have failed with: + // - Expected greater than: 17500 (19867) + // - Actual : 4966 + // i.e. the width of the background arrow was too small. + CPPUNIT_ASSERT_GREATER(static_cast<sal_Int32>(17500), xShape->getSize().Width); + + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTestSmartArt); CPPUNIT_PLUGIN_IMPLEMENT(); |