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

Miklos Vajna vmiklos at collabora.co.uk
Tue Feb 18 13:56:13 CET 2014


 sw/qa/extras/ooxmlimport/ooxmlimport.cxx      |    4 ++++
 writerfilter/source/dmapper/DomainMapper.cxx  |   12 ++++++++++--
 writerfilter/source/dmapper/SettingsTable.cxx |   11 +++++++++++
 writerfilter/source/dmapper/SettingsTable.hxx |    3 +++
 writerfilter/source/ooxml/model.xml           |    2 +-
 5 files changed, 29 insertions(+), 3 deletions(-)

New commits:
commit 15c05b945b238ae05cda92564b9465f04db5c919
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Mon Feb 17 10:00:32 2014 +0100

    fdo#74357 DOCX import: avoid layout problem with automatic spacing
    
    Commit 279ff2e03371542d014bf281e73282ba8080cf6b (bnc#816593 DOCX import:
    fix auto para spacing without compat option, 2013-08-28) corrected the
    value of "auto" paragraph spacing, but unfortunately this triggers a
    layout problem:
    
    warn:legacy.osl:12692:1:sw/source/core/layout/tabfrm.cxx:2513: debug assertion: <SwTabFrm::MakeAll()> - format of table lowers suppressed by fix i44910
    
    resulting in "the rest of the table is not rendered by the layout".
    
    Given that we backported the original fix to stable branches as well,
    just stay on the safe side and revert back to the original behavior in
    case the document requests the web layout.
    
    (cherry picked from commit 8b6ff51bb89db0d7050bb4d00c0ec797b4754f25)
    
    Conflicts:
    	writerfilter/source/dmapper/SettingsTable.cxx
    
    Change-Id: I72683530b5218beff084bec8218cc99946b44802
    Reviewed-on: https://gerrit.libreoffice.org/8081
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index a7d576e..dca64b7 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -744,6 +744,10 @@ DECLARE_OOXMLIMPORT_TEST(testFdo74357, "fdo74357.docx")
     uno::Reference<container::XIndexAccess> xDrawPage(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
     // This was 0.
     CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDrawPage->getCount());
+
+    // Bottom margin of the first paragraph was too large, causing a layout problem.
+    // This was 494.
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(86), getProperty<sal_Int32>(getParagraph(1), "ParaBottomMargin"));
 }
 
 DECLARE_OOXMLIMPORT_TEST(testFdo55187, "fdo55187.docx")
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 06ea11c..6ed6ddf 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -1192,7 +1192,12 @@ void DomainMapper::lcl_attribute(Id nName, Value & val)
             sal_Int32 default_spacing = 100;
             if (!m_pImpl->GetSettingsTable()->GetDoNotUseHTMLParagraphAutoSpacing())
             {
-                default_spacing = 280;
+                // 49 is just the old value that should be removed, once the
+                // root cause in SwTabFrm::MakeAll() is fixed.
+                if (m_pImpl->GetSettingsTable()->GetView() == NS_ooxml::LN_Value_wordprocessingml_ST_View_web)
+                    default_spacing = 49;
+                else
+                    default_spacing = 280;
             }
             m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN, uno::makeAny( ConversionHelper::convertTwipToMM100(default_spacing) ) );
             if  (nIntValue) // If auto spacing is set, then only store set value in InteropGrabBag
@@ -1207,7 +1212,10 @@ void DomainMapper::lcl_attribute(Id nName, Value & val)
 
             if (!m_pImpl->GetSettingsTable()->GetDoNotUseHTMLParagraphAutoSpacing())
             {
-                default_spacing = 280;
+                if (m_pImpl->GetSettingsTable()->GetView() == NS_ooxml::LN_Value_wordprocessingml_ST_View_web)
+                    default_spacing = 49;
+                else
+                    default_spacing = 280;
             }
             m_pImpl->GetTopContext()->Insert( PROP_PARA_BOTTOM_MARGIN, uno::makeAny( ConversionHelper::convertTwipToMM100(default_spacing) ) );
             if  (nIntValue) // If auto spacing is set, then only store set value in InteropGrabBag
diff --git a/writerfilter/source/dmapper/SettingsTable.cxx b/writerfilter/source/dmapper/SettingsTable.cxx
index b01047a..b4c54a2 100644
--- a/writerfilter/source/dmapper/SettingsTable.cxx
+++ b/writerfilter/source/dmapper/SettingsTable.cxx
@@ -67,6 +67,7 @@ struct SettingsTable_Impl
     OUString     m_sSalt;
     bool                m_bLinkStyles;
     sal_Int16           m_nZoomFactor;
+    Id                  m_nView;
     bool                m_bEvenAndOddHeaders;
     bool                m_bUsePrinterMetrics;
     bool                embedTrueTypeFonts;
@@ -91,6 +92,7 @@ struct SettingsTable_Impl
     , m_nCryptSpinCount(0)
     , m_bLinkStyles(false)
     , m_nZoomFactor(0)
+    , m_nView(0)
     , m_bEvenAndOddHeaders(false)
     , m_bUsePrinterMetrics(false)
     , embedTrueTypeFonts(false)
@@ -123,6 +125,9 @@ void SettingsTable::lcl_attribute(Id nName, Value & val)
     case NS_ooxml::LN_CT_Zoom_percent:
         m_pImpl->m_nZoomFactor = nIntValue;
     break;
+    case NS_ooxml::LN_CT_View_val:
+        m_pImpl->m_nView = nIntValue;
+        break;
     default:
     {
 #ifdef DEBUG_DMAPPER_SETTINGS_TABLE
@@ -152,6 +157,7 @@ void SettingsTable::lcl_sprm(Sprm& rSprm)
     case NS_ooxml::LN_CT_Settings_compat: //  92547;
     case NS_ooxml::LN_CT_Settings_themeFontLang: //  92552;
     case NS_ooxml::LN_CT_Settings_shapeDefaults: //  92560;
+    case NS_ooxml::LN_CT_Settings_view:
 
     //PropertySetValues - need to be resolved
     {
@@ -251,6 +257,11 @@ sal_Int16 SettingsTable::GetZoomFactor() const
     return m_pImpl->m_nZoomFactor;
 }
 
+Id SettingsTable::GetView() const
+{
+    return m_pImpl->m_nView;
+}
+
 bool SettingsTable::GetUsePrinterMetrics() const
 {
     return m_pImpl->m_bUsePrinterMetrics;
diff --git a/writerfilter/source/dmapper/SettingsTable.hxx b/writerfilter/source/dmapper/SettingsTable.hxx
index 14b7552..c853616 100644
--- a/writerfilter/source/dmapper/SettingsTable.hxx
+++ b/writerfilter/source/dmapper/SettingsTable.hxx
@@ -61,6 +61,9 @@ class WRITERFILTER_DLLPRIVATE SettingsTable : public LoggedProperties, public Lo
     /// What's the zoom factor set in percents?
     sal_Int16 GetZoomFactor() const;
 
+    /// What's the requested view? E.g. "web".
+    Id GetView() const;
+
     bool GetEvenAndOddHeaders() const;
 
     bool GetUsePrinterMetrics() const;
diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
index 1cf434c..a049fde 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -14132,7 +14132,7 @@
       </define>
       <define name="CT_View">
         <attribute name="val">
-          <text/>
+          <ref name="ST_View"/>
           <xs:documentation>Document View Setting  Value</xs:documentation>
         </attribute>
       </define>


More information about the Libreoffice-commits mailing list