summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornd101 <Fong@nd.com.cn>2020-03-25 13:17:48 +0800
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2020-04-02 21:40:50 +0200
commit55d423e8f371e914c51f9aa18aacede46355b133 (patch)
tree377eae7cfeca7710d5a6939aad4f388ae4aa9a9b
parentResolves: tdf#131767 explicitly get the odt filter (diff)
downloadcore-55d423e8f371e914c51f9aa18aacede46355b133.tar.gz
core-55d423e8f371e914c51f9aa18aacede46355b133.zip
tdf#131554 placeholder iteration fails to stop when a match is found
Wrong placeholder is returned due to iteration not stopping when a match is found. It causes a text element position to be incorrectly set. Change-Id: I58be6825cec7a61f48b46418bdf28964c1afe4ce Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91023 Reviewed-by: Xisco FaulĂ­ <xiscofauli@libreoffice.org> Reviewed-by: Michael Stahl <michael.stahl@cib.de> Tested-by: Jenkins Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91472 Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
-rw-r--r--oox/source/ppt/pptshape.cxx4
-rw-r--r--sd/qa/unit/data/pptx/tdf131554.pptxbin0 -> 21065 bytes
-rw-r--r--sd/qa/unit/export-tests-ooxml2.cxx11
3 files changed, 14 insertions, 1 deletions
diff --git a/oox/source/ppt/pptshape.cxx b/oox/source/ppt/pptshape.cxx
index 0088c1e51673..39b0c2eb4abc 100644
--- a/oox/source/ppt/pptshape.cxx
+++ b/oox/source/ppt/pptshape.cxx
@@ -424,6 +424,8 @@ namespace
// 3. ph with nSecondSubType and the same oSubTypeIndex
// 4. ph with nSecondSubType
// 5. ph with the same oSubTypeIndex
+// It appears 3 and 1 has the same highest prority.
+
oox::drawingml::ShapePtr PPTShape::findPlaceholder( sal_Int32 nFirstSubType, sal_Int32 nSecondSubType,
const OptValue< sal_Int32 >& oSubTypeIndex, std::vector< oox::drawingml::ShapePtr >& rShapes, bool bMasterOnly )
{
@@ -473,7 +475,7 @@ oox::drawingml::ShapePtr PPTShape::findPlaceholder( sal_Int32 nFirstSubType, sal
aChoiceShapePtr3 = aChoiceShapePtr4;
}
}
- if (aShapePtr.get())
+ if (aShapePtr.get() || aChoiceShapePtr2.get())
break;
++aRevIter;
}
diff --git a/sd/qa/unit/data/pptx/tdf131554.pptx b/sd/qa/unit/data/pptx/tdf131554.pptx
new file mode 100644
index 000000000000..a65f423add39
--- /dev/null
+++ b/sd/qa/unit/data/pptx/tdf131554.pptx
Binary files differ
diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx
index 78452a763f01..d0ef2dac0eb7 100644
--- a/sd/qa/unit/export-tests-ooxml2.cxx
+++ b/sd/qa/unit/export-tests-ooxml2.cxx
@@ -182,6 +182,7 @@ public:
void testTdf127372();
void testTdf127379();
void testTdf98603();
+ void testTdf131554();
CPPUNIT_TEST_SUITE(SdOOXMLExportTest2);
@@ -282,6 +283,7 @@ public:
CPPUNIT_TEST(testTdf127372);
CPPUNIT_TEST(testTdf127379);
CPPUNIT_TEST(testTdf98603);
+ CPPUNIT_TEST(testTdf131554);
CPPUNIT_TEST_SUITE_END();
@@ -2633,6 +2635,15 @@ void SdOOXMLExportTest2::testTdf98603()
CPPUNIT_ASSERT_EQUAL(OUString("IL"), aLocale.Country);
}
+void SdOOXMLExportTest2::testTdf131554()
+{
+ ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/tdf131554.pptx"), PPTX);
+ xDocShRef = saveAndReload( xDocShRef.get(), PPTX );
+ uno::Reference<drawing::XShape> xShape(getShapeFromPage(1, 0, xDocShRef), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(5622), xShape->getPosition().X);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(13251), xShape->getPosition().Y);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SdOOXMLExportTest2);
CPPUNIT_PLUGIN_IMPLEMENT();