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

Justin Luth (via logerrit) logerrit at kemper.freedesktop.org
Tue Mar 23 14:44:37 UTC 2021


 sw/qa/extras/ooxmlexport/data/tdf125936_numberingSuperscript.docx |binary
 sw/qa/extras/ooxmlexport/ooxmlexport16.cxx                        |    6 ++++++
 writerfilter/source/dmapper/DomainMapper.cxx                      |   10 ++++++++--
 writerfilter/source/dmapper/DomainMapper.hxx                      |    1 +
 writerfilter/source/dmapper/DomainMapper_Impl.cxx                 |    1 +
 writerfilter/source/dmapper/DomainMapper_Impl.hxx                 |    3 +++
 6 files changed, 19 insertions(+), 2 deletions(-)

New commits:
commit 2a7617653fb3d31e44e5cbcf8daf4b4c2a24e2c8
Author:     Justin Luth <justin.luth at collabora.com>
AuthorDate: Tue Mar 23 12:18:43 2021 +0200
Commit:     Justin Luth <justin_luth at sil.org>
CommitDate: Tue Mar 23 15:43:57 2021 +0100

    tdf#125936 writerfilter: treat escapement in numbering like styles
    
    deferCharacterProperties wasn't occurring in the numbering import
    (and so it was affecting the first run of the body text).
    
    But just like character styles, it would be better to just
    consider this auto-superscript instead of to defer it
    and calculate based on the fontsize - since that really
    isn't known until layout time, and so only works with
    direct formating.
    
    Change-Id: I9ce5a31c173089603316f4c3389e5f2e5dbe165a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112982
    Tested-by: Jenkins
    Reviewed-by: Justin Luth <justin_luth at sil.org>

diff --git a/sw/qa/extras/ooxmlexport/data/tdf125936_numberingSuperscript.docx b/sw/qa/extras/ooxmlexport/data/tdf125936_numberingSuperscript.docx
new file mode 100644
index 000000000000..eb856fb3b02e
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf125936_numberingSuperscript.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx
index 0e0ad7cea8e1..357f315af140 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx
@@ -109,6 +109,12 @@ DECLARE_OOXMLEXPORT_TEST(testTdf138771, "tdf138771.docx")
     CPPUNIT_ASSERT_EQUAL(1, getPages());
 }
 
+DECLARE_OOXMLEXPORT_TEST(testTdf125936_numberingSuperscript, "tdf125936_numberingSuperscript.docx")
+{
+    // Without the fix, the first character run was superscripted.
+    CPPUNIT_ASSERT_EQUAL( sal_Int16(0), getProperty<sal_Int16>(getRun(getParagraph(1), 1, "A-570-108"), "CharEscapement") );
+}
+
 DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf134619_numberingProps, "tdf134619_numberingProps.doc")
 {
     // Get the third paragraph's numbering style's 1st level's bullet size
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index b36ec059cfde..42b8bd3a09a8 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -1809,7 +1809,7 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext )
         // The spec says 0 is the same as the lack of the value, so don't parse that.
         if ( nIntValue )
         {
-            if ( !IsStyleSheetImport() )
+            if (!IsStyleSheetImport() && !IsNumberingImport())
                 m_pImpl->deferCharacterProperty( nSprmId, uno::makeAny( nIntValue ));
             else if (!m_pImpl->IsDocDefaultsImport())
             {
@@ -3702,10 +3702,11 @@ void DomainMapper::lcl_table(Id name, writerfilter::Reference<Table>::Pointer_t
         break;
     case NS_ooxml::LN_NUMBERING:
         {
-
+            m_pImpl->SetNumberingImport(true);
             //the same for list tables
             ref->resolve( *m_pImpl->GetListTable() );
             m_pImpl->GetListTable( )->CreateNumberingRules( );
+            m_pImpl->SetNumberingImport(false);
         }
         break;
     case NS_ooxml::LN_THEMETABLE:
@@ -4038,6 +4039,11 @@ bool DomainMapper::IsStyleSheetImport() const
     return m_pImpl->IsStyleSheetImport();
 }
 
+bool DomainMapper::IsNumberingImport() const
+{
+    return m_pImpl->IsNumberingImport();
+}
+
 void DomainMapper::enableInteropGrabBag(const OUString& aName)
 {
     m_pImpl->m_aInteropGrabBagName = aName;
diff --git a/writerfilter/source/dmapper/DomainMapper.hxx b/writerfilter/source/dmapper/DomainMapper.hxx
index 46bbd2b39018..4e47dd70a441 100644
--- a/writerfilter/source/dmapper/DomainMapper.hxx
+++ b/writerfilter/source/dmapper/DomainMapper.hxx
@@ -114,6 +114,7 @@ public:
     bool IsInTable() const;
     void SetDocDefaultsImport(bool bSet);
     bool IsStyleSheetImport() const;
+    bool IsNumberingImport() const;
     bool IsInShape() const;
 
     void hasControls( const bool bSet ) { mbHasControls = bSet; }
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 311515fbc9a1..d12a2ca8970f 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -301,6 +301,7 @@ DomainMapper_Impl::DomainMapper_Impl(
         m_sDefaultParaStyleName(),
         m_bInDocDefaultsImport(false),
         m_bInStyleSheetImport( false ),
+        m_bInNumberingImport(false),
         m_bInAnyTableImport( false ),
         m_eInHeaderFooterImport( HeaderFooterImportState::none ),
         m_bDiscardHeaderFooter( false ),
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index 0538b68e95a9..6aa33913d924 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -521,6 +521,7 @@ private:
     OUString                        m_sDefaultParaStyleName; //caches the ConvertedStyleName of the default paragraph style
     bool                            m_bInDocDefaultsImport;
     bool                            m_bInStyleSheetImport; //in import of fonts, styles, lists or lfos
+    bool                            m_bInNumberingImport; //in import of numbering (i.e. numbering.xml)
     bool                            m_bInAnyTableImport; //in import of fonts, styles, lists or lfos
     enum class HeaderFooterImportState
     {
@@ -788,6 +789,8 @@ public:
     bool        IsDocDefaultsImport()const { return m_bInDocDefaultsImport;}
     void        SetStyleSheetImport( bool bSet ) { m_bInStyleSheetImport = bSet;}
     bool        IsStyleSheetImport()const { return m_bInStyleSheetImport;}
+    void        SetNumberingImport( bool bSet ) { m_bInNumberingImport = bSet;}
+    bool        IsNumberingImport() const { return m_bInNumberingImport;}
     void        SetAnyTableImport( bool bSet ) { m_bInAnyTableImport = bSet;}
     bool        IsAnyTableImport()const { return m_bInAnyTableImport;}
     bool        IsInShape()const { return m_aAnchoredStack.size() > 0;}


More information about the Libreoffice-commits mailing list