summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/qa/extras/indexing/IndexingExportTest.cxx20
-rw-r--r--sw/qa/extras/indexing/data/IndexingExport_OLE.odtbin0 -> 14358 bytes
-rw-r--r--sw/source/filter/indexing/IndexingExport.cxx17
3 files changed, 36 insertions, 1 deletions
diff --git a/sw/qa/extras/indexing/IndexingExportTest.cxx b/sw/qa/extras/indexing/IndexingExportTest.cxx
index f76850c1a803..807f84ab6934 100644
--- a/sw/qa/extras/indexing/IndexingExportTest.cxx
+++ b/sw/qa/extras/indexing/IndexingExportTest.cxx
@@ -28,10 +28,12 @@ private:
public:
void testIndexingExport_Paragraphs();
void testIndexingExport_Images();
+ void testIndexingExport_OLE();
CPPUNIT_TEST_SUITE(IndexingExportTest);
CPPUNIT_TEST(testIndexingExport_Paragraphs);
CPPUNIT_TEST(testIndexingExport_Images);
+ CPPUNIT_TEST(testIndexingExport_OLE);
CPPUNIT_TEST_SUITE_END();
};
@@ -100,6 +102,24 @@ void IndexingExportTest::testIndexingExport_Images()
assertXPath(pXmlDoc, "/indexing/graphic[2]", "name", "Image_InCaption");
}
+void IndexingExportTest::testIndexingExport_OLE()
+{
+ SwDoc* pDoc = createDoc("IndexingExport_OLE.odt");
+ CPPUNIT_ASSERT(pDoc);
+
+ SvMemoryStream aMemoryStream;
+ sw::IndexingExport aIndexingExport(aMemoryStream, pDoc);
+ aIndexingExport.runExport();
+ aMemoryStream.Seek(0);
+
+ xmlDocUniquePtr pXmlDoc = parseXmlStream(&aMemoryStream);
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/indexing");
+ assertXPath(pXmlDoc, "/indexing/ole[1]", "name", "Object - Chart");
+ assertXPath(pXmlDoc, "/indexing/ole[1]", "alt", "Alt Text");
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(IndexingExportTest);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/qa/extras/indexing/data/IndexingExport_OLE.odt b/sw/qa/extras/indexing/data/IndexingExport_OLE.odt
new file mode 100644
index 000000000000..3da225368bd4
--- /dev/null
+++ b/sw/qa/extras/indexing/data/IndexingExport_OLE.odt
Binary files differ
diff --git a/sw/source/filter/indexing/IndexingExport.cxx b/sw/source/filter/indexing/IndexingExport.cxx
index 8d6e96fd262c..601d67ed1b21 100644
--- a/sw/source/filter/indexing/IndexingExport.cxx
+++ b/sw/source/filter/indexing/IndexingExport.cxx
@@ -12,6 +12,8 @@
#include <node.hxx>
#include <ndtxt.hxx>
+#include <ndole.hxx>
+#include <ndnotxt.hxx>
#include <ndgrf.hxx>
namespace sw
@@ -31,7 +33,11 @@ public:
void handleNode(SwNode* pNode) override
{
- if (pNode->IsGrfNode())
+ if (pNode->IsOLENode())
+ {
+ handleOLENode(pNode->GetOLENode());
+ }
+ else if (pNode->IsGrfNode())
{
handleGraphicNode(pNode->GetGrfNode());
}
@@ -41,6 +47,15 @@ public:
}
}
+ void handleOLENode(SwOLENode* pOleNode)
+ {
+ auto pFrameFormat = pOleNode->GetFlyFormat();
+ m_rXmlWriter.startElement("ole");
+ m_rXmlWriter.attribute("alt", pOleNode->GetTitle());
+ m_rXmlWriter.attribute("name", pFrameFormat->GetName());
+ m_rXmlWriter.endElement();
+ }
+
void handleGraphicNode(SwGrfNode* pGraphicNode)
{
auto pFrameFormat = pGraphicNode->GetFlyFormat();