[Libreoffice-commits] core.git: sw/qa sw/source

Miklos Vajna vmiklos at collabora.co.uk
Fri Jan 29 04:19:33 PST 2016


 sw/qa/extras/rtfexport/data/tdf96175.rtf |    6 ++++++
 sw/qa/extras/rtfexport/rtfexport.cxx     |   10 ++++++++++
 sw/source/filter/ww8/rtfexport.cxx       |   15 +++++++++++++++
 3 files changed, 31 insertions(+)

New commits:
commit abe8ea175ad9fc282a1e702acb74da5d7c967cbe
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Fri Jan 29 12:18:49 2016 +0100

    tdf#96175 RTF filter: export \company
    
    Change-Id: I590d015aa50350cceef70313498e72474d242789
    Reviewed-on: https://gerrit.libreoffice.org/21897
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Jenkins <ci at libreoffice.org>

diff --git a/sw/qa/extras/rtfexport/data/tdf96175.rtf b/sw/qa/extras/rtfexport/data/tdf96175.rtf
new file mode 100644
index 0000000..b125ba6
--- /dev/null
+++ b/sw/qa/extras/rtfexport/data/tdf96175.rtf
@@ -0,0 +1,6 @@
+{\rtf1
+{\info
+{\*\company foobar}
+}
+hello
+\par}
diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx
index f39e013..0825034 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -973,6 +973,16 @@ DECLARE_RTFEXPORT_TEST(testPageBackground, "page-background.rtf")
     CPPUNIT_ASSERT_EQUAL(sal_Int32(0x92D050), getProperty<sal_Int32>(xPageStyle, "BackColor"));
 }
 
+DECLARE_RTFEXPORT_TEST(testTdf96175, "tdf96175.rtf")
+{
+    // The problem that a user defined property named "Company" was lost on export.
+    uno::Reference<document::XDocumentPropertiesSupplier> xDocumentPropertiesSupplier(mxComponent, uno::UNO_QUERY);
+    uno::Reference<document::XDocumentProperties> xDocumentProperties(xDocumentPropertiesSupplier->getDocumentProperties(), uno::UNO_QUERY);
+    uno::Reference<beans::XPropertyContainer> xUserDefinedProperties = xDocumentProperties->getUserDefinedProperties();
+    // This resulted in a beans::UnknownPropertyException.
+    CPPUNIT_ASSERT_EQUAL(OUString("foobar"), getProperty<OUString>(xUserDefinedProperties, "Company"));
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/ww8/rtfexport.cxx b/sw/source/filter/ww8/rtfexport.cxx
index 4fed09f..766d6d4 100644
--- a/sw/source/filter/ww8/rtfexport.cxx
+++ b/sw/source/filter/ww8/rtfexport.cxx
@@ -443,6 +443,21 @@ void RtfExport::WriteInfo()
 
     if (xDocProps.is())
     {
+        // Handle user-defined properties.
+        uno::Reference<beans::XPropertyContainer> xUserDefinedProperties = xDocProps->getUserDefinedProperties();
+        if (xUserDefinedProperties.is())
+        {
+            uno::Reference<beans::XPropertySet> xPropertySet(xUserDefinedProperties, uno::UNO_QUERY);
+            uno::Reference<beans::XPropertySetInfo> xPropertySetInfo = xPropertySet->getPropertySetInfo();
+            // Do we have explicit markup in RTF for this property name?
+            if (xPropertySetInfo->hasPropertyByName("Company"))
+            {
+                OUString aValue;
+                xPropertySet->getPropertyValue("Company") >>= aValue;
+                OutUnicode(OOO_STRING_SVTOOLS_RTF_IGNORE OOO_STRING_SVTOOLS_RTF_COMPANY, aValue);
+            }
+        }
+
         OutUnicode(OOO_STRING_SVTOOLS_RTF_TITLE, xDocProps->getTitle(), true);
         OutUnicode(OOO_STRING_SVTOOLS_RTF_SUBJECT, xDocProps->getSubject());
 


More information about the Libreoffice-commits mailing list