[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - sw/qa writerfilter/source

Miklos Vajna vmiklos at collabora.co.uk
Tue Jul 28 22:57:29 PDT 2015


 sw/qa/extras/ooxmlimport/data/tdf89702.docx       |binary
 sw/qa/extras/ooxmlimport/ooxmlimport.cxx          |   14 ++++++++++++++
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |   16 ++++++++++------
 3 files changed, 24 insertions(+), 6 deletions(-)

New commits:
commit 3370c2caa28577a80f81efb954a227c58531c6ee
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Jul 21 09:04:44 2015 +0200

    tdf#89702 DOCX import: fix too large bullet character
    
    Commit c1f8437dbed0e8b989e41a345ef7e658a6e8a4cd (fdo#83465 RTF import:
    handle font of numbering, 2014-09-25), changed the "get the me character
    style of the current numbering's current level" member function to be
    successfull even in case we're inside a DOCX run, not when we're inside
    a DOCX paragraph, but outside runs.
    
    While this is necessary for RTF, the side effect of this was that
    unwanted run properties started to affect the above mentioned character
    style in case of DOCX.
    
    Fix the problem by enabling the "in paragraph and run" looking for RTF
    only.
    
    Change-Id: I610bfce6cec15b918fe547402360f5a894401f7e
    (cherry picked from commit fc7c1a07d0d5e21a4e1533a0e5b0ac256763f973)
    Reviewed-on: https://gerrit.libreoffice.org/17380
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    Tested-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/sw/qa/extras/ooxmlimport/data/tdf89702.docx b/sw/qa/extras/ooxmlimport/data/tdf89702.docx
new file mode 100644
index 0000000..5542d1c
Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/tdf89702.docx differ
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index 1f5843d..ced25ac 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -2609,6 +2609,20 @@ DECLARE_OOXMLIMPORT_TEST(testTdf90611, "tdf90611.docx")
     CPPUNIT_ASSERT_EQUAL(10.f, getProperty<float>(getParagraphOfText(1, xFootnoteText), "CharHeight"));
 }
 
+DECLARE_OOXMLIMPORT_TEST(testTdf89702, "tdf89702.docx")
+{
+    // Get the first paragraph's numbering style's 2nd level's character style name.
+    uno::Reference<text::XTextRange> xParagraph = getParagraph(1);
+    auto xLevels = getProperty< uno::Reference<container::XIndexAccess> >(xParagraph, "NumberingRules");
+    uno::Sequence<beans::PropertyValue> aLevel;
+    xLevels->getByIndex(1) >>= aLevel; // 2nd level
+    OUString aCharStyleName = std::find_if(aLevel.begin(), aLevel.end(), [](const beans::PropertyValue& rValue) { return rValue.Name == "CharStyleName"; })->Value.get<OUString>();
+
+    // Make sure that the font name is Arial, this was Verdana.
+    uno::Reference<beans::XPropertySet> xStyle(getStyles("CharacterStyles")->getByName(aCharStyleName), uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(OUString("Arial"), getProperty<OUString>(xStyle, "CharFontName"));
+}
+
 #endif
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 66453ac..f6874f5 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -4942,12 +4942,16 @@ uno::Reference<beans::XPropertySet> DomainMapper_Impl::GetCurrentNumberingCharSt
         uno::Reference<container::XIndexAccess> xLevels = GetCurrentNumberingRules(&nListLevel);
         if (!xLevels.is())
         {
-            // Looking up the paragraph context explicitly (and not just taking
-            // the top context) is necessary for RTF, where formatting of a run
-            // and of the paragraph mark is not separated.
-            PropertyMapPtr pContext = GetTopContextOfType(CONTEXT_PARAGRAPH);
-            if (!pContext)
-                return xRet;
+            PropertyMapPtr pContext = m_pTopContext;
+            if (IsRTFImport())
+            {
+                // Looking up the paragraph context explicitly (and not just taking
+                // the top context) is necessary for RTF, where formatting of a run
+                // and of the paragraph mark is not separated.
+                pContext = GetTopContextOfType(CONTEXT_PARAGRAPH);
+                if (!pContext)
+                    return xRet;
+            }
 
             // In case numbering rules is not found via a style, try the direct formatting instead.
             boost::optional<PropertyMap::Property> oProp = pContext->getProperty(PROP_NUMBERING_RULES);


More information about the Libreoffice-commits mailing list