sw/qa/extras/ooxmlimport/data/frame-wrap-auto.docx |binary
 sw/qa/extras/ooxmlimport/ooxmlimport.cxx           |    7 +++++++
 writerfilter/source/dmapper/DomainMapper.cxx       |   14 +++++++++-----
 3 files changed, 16 insertions(+), 5 deletions(-)

New commits:
commit 5e44328c4a2ca748e1254c008ff6d84a58601cde
Author: Tushar Bende <tushar.be...@synerzip.com>
Date:   Mon Mar 17 22:40:19 2014 +0530

    fdo#72775 : LibreOffice hang while opening some documents
    
    Description: There was a problem for some documents, when opened in 
LibreOffice
    there was continuous increase in page numbers.And this was the reason for 
LO getting hang.
    
    The wrap property "NS_ooxml::LN_Value_wordprocessingml_ST_Wrap_auto" was 
not handled in DomainMapper::lcl_attribute() and hence paragraph's wrap 
property was getting set to
    "text::WrapTextMode_NONE" this was the reason for increasing number of 
pages while opening doc in LO.
    
    added condition to handle NS_ooxml::LN_Value_wordprocessingml_ST_Wrap_auto.
    
    *added test case to verify that the document is opening properly and 
checking it's page count.
    
    Conflicts:
        sw/qa/extras/ooxmlimport/ooxmlimport.cxx
    
    Reviewed on:
        https://gerrit.libreoffice.org/8632
    
    Change-Id: Id24ebc8409e7fd53915e5130beb9ad6f8bb8571f

diff --git a/sw/qa/extras/ooxmlimport/data/frame-wrap-auto.docx 
b/sw/qa/extras/ooxmlimport/data/frame-wrap-auto.docx
new file mode 100644
index 0000000..6ad7fe0
Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/frame-wrap-auto.docx 
differ
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx 
b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index 1492cd9..e47a208 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -1976,6 +1976,13 @@ DECLARE_OOXMLIMPORT_TEST(testSmartartStrict, 
"strict-smartart.docx")
     CPPUNIT_ASSERT_EQUAL(sal_Int32(6), xGroup->getCount()); // 3 ellipses + 3 
arrows
 }
 
+DECLARE_OOXMLIMPORT_TEST(testLibreOfficeHang, "frame-wrap-auto.docx")
+{
+    // fdo#72775
+    // This was text::WrapTextMode_NONE.
+    CPPUNIT_ASSERT_EQUAL(text::WrapTextMode_DYNAMIC, 
getProperty<text::WrapTextMode>(getShape(1), "Surround"));
+}
+
 DECLARE_OOXMLIMPORT_TEST(testI124106, "i124106.docx")
 {
     // This was 2.
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx 
b/writerfilter/source/dmapper/DomainMapper.cxx
index 435919e..4c18238 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -733,12 +733,16 @@ void DomainMapper::lcl_attribute(Id nName, Value & val)
                     break;
                     case NS_ooxml::LN_CT_FramePr_wrap:
                     {
-                        //should be either 
LN_Value_wordprocessingml_ST_Wrap_notBeside or 
LN_Value_wordprocessingml_ST_Wrap_around
+                        //should be either 
LN_Value_wordprocessingml_ST_Wrap_notBeside or 
LN_Value_wordprocessingml_ST_Wrap_around or 
LN_Value_wordprocessingml_ST_Wrap_auto
                         OSL_ENSURE( sal::static_int_cast<Id>(nIntValue) == 
NS_ooxml::LN_Value_wordprocessingml_ST_Wrap_around ||
-                                    sal::static_int_cast<Id>(nIntValue) == 
NS_ooxml::LN_Value_wordprocessingml_ST_Wrap_notBeside,
-                            "wrap not around or not_Beside?");
-                        
pParaProperties->SetWrap(sal::static_int_cast<Id>(nIntValue) == 
NS_ooxml::LN_Value_wordprocessingml_ST_Wrap_around ?
-                                                 text::WrapTextMode_DYNAMIC : 
text::WrapTextMode_NONE );
+                                    sal::static_int_cast<Id>(nIntValue) == 
NS_ooxml::LN_Value_wordprocessingml_ST_Wrap_notBeside ||
+                                    sal::static_int_cast<Id>(nIntValue) == 
NS_ooxml::LN_Value_wordprocessingml_ST_Wrap_auto,
+                            "wrap not around, not_Beside or auto?");
+                        if( sal::static_int_cast<Id>(nIntValue) == 
NS_ooxml::LN_Value_wordprocessingml_ST_Wrap_around ||
+                            sal::static_int_cast<Id>(nIntValue) == 
NS_ooxml::LN_Value_wordprocessingml_ST_Wrap_auto )
+                            pParaProperties->SetWrap ( 
text::WrapTextMode_DYNAMIC ) ;
+                        else
+                            pParaProperties->SetWrap ( text::WrapTextMode_NONE 
) ;
                     }
                     break;
                     case NS_ooxml::LN_CT_FramePr_w:
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to