sw/qa/extras/ww8export/ww8export4.cxx               |   22 ++++++++++++++++++++
 sw/qa/filter/ww8/data/dont-break-wrapped-tables.doc |binary
 sw/qa/filter/ww8/ww8.cxx                            |   15 +++++++++++++
 sw/source/filter/ww8/wrtww8.cxx                     |    3 ++
 sw/source/filter/ww8/ww8par.cxx                     |    6 +++++
 sw/source/filter/ww8/ww8scan.cxx                    |    8 +++----
 sw/source/filter/ww8/ww8scan.hxx                    |   11 +++++++++-
 7 files changed, 60 insertions(+), 5 deletions(-)

New commits:
commit 63de1ea465ef72ecb8d4a7dcdaf5e92ea875eb00
Author:     Miklos Vajna <vmik...@collabora.com>
AuthorDate: Fri May 26 09:00:05 2023 +0200
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Fri May 26 10:17:53 2023 +0200

    sw floattable: handle fDontBreakWrappedTables in the DOC filter
    
    This is the binary DOC import/export for the functionality added in
    commit 08fa2903df1a7cf9a1647fcf967e4c8b57dad793 (sw floattable: add a
    DoNotBreakWrappedTables compat flag, 2023-05-24).
    
    Change-Id: I91c29b9049e8e9079ed16b1beeefddfa2f6e9a6a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152291
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>
    Tested-by: Jenkins

diff --git a/sw/qa/extras/ww8export/ww8export4.cxx 
b/sw/qa/extras/ww8export/ww8export4.cxx
index 9e4551fe872f..4a290a53f2d9 100644
--- a/sw/qa/extras/ww8export/ww8export4.cxx
+++ b/sw/qa/extras/ww8export/ww8export4.cxx
@@ -120,6 +120,28 @@ DECLARE_WW8EXPORT_TEST(testTdf155465_paraAdjustDistribute, 
"tdf155465_paraAdjust
     CPPUNIT_ASSERT_EQUAL(style::ParagraphAdjust_LEFT, 
static_cast<style::ParagraphAdjust>(nAdjust));
 }
 
+CPPUNIT_TEST_FIXTURE(Test, testDontBreakWrappedTables)
+{
+    // Given a document with the DO_NOT_BREAK_WRAPPED_TABLES compat mode 
enabled:
+    createSwDoc();
+    {
+        SwDoc* pDoc = getSwDoc();
+        IDocumentSettingAccess& rIDSA = pDoc->getIDocumentSettingAccess();
+        rIDSA.set(DocumentSettingId::DO_NOT_BREAK_WRAPPED_TABLES, true);
+    }
+
+    // When saving to doc:
+    reload(mpFilter, "dont-break-wrapped-tables.doc");
+
+    // Then make sure the compat flag is serialized:
+    SwDoc* pDoc = getSwDoc();
+    IDocumentSettingAccess& rIDSA = pDoc->getIDocumentSettingAccess();
+    bool bDontBreakWrappedTables = 
rIDSA.get(DocumentSettingId::DO_NOT_BREAK_WRAPPED_TABLES);
+    // Without the accompanying fix in place, this test would have failed, the 
compat flag was not
+    // set.
+    CPPUNIT_ASSERT(bDontBreakWrappedTables);
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/filter/ww8/data/dont-break-wrapped-tables.doc 
b/sw/qa/filter/ww8/data/dont-break-wrapped-tables.doc
new file mode 100644
index 000000000000..01f355227274
Binary files /dev/null and 
b/sw/qa/filter/ww8/data/dont-break-wrapped-tables.doc differ
diff --git a/sw/qa/filter/ww8/ww8.cxx b/sw/qa/filter/ww8/ww8.cxx
index 8f6266a86426..253317c0deac 100644
--- a/sw/qa/filter/ww8/ww8.cxx
+++ b/sw/qa/filter/ww8/ww8.cxx
@@ -327,6 +327,21 @@ CPPUNIT_TEST_FIXTURE(Test, testDoNotBreakWrappedTables)
     // i.e. <w:doNotBreakWrappedTables> was not written.
     assertXPath(pXmlDoc, "/w:settings/w:compat/w:doNotBreakWrappedTables", 1);
 }
+
+CPPUNIT_TEST_FIXTURE(Test, testDOCfDontBreakWrappedTables)
+{
+    // Given a document with fDontBreakWrappedTables:
+    // When importing that document:
+    createSwDoc("dont-break-wrapped-tables.doc");
+
+    // Then make sure that the matching compat flag is set:
+    SwDoc* pDoc = getSwDoc();
+    IDocumentSettingAccess& rIDSA = pDoc->getIDocumentSettingAccess();
+    bool bDontBreakWrappedTables = 
rIDSA.get(DocumentSettingId::DO_NOT_BREAK_WRAPPED_TABLES);
+    // Without the accompanying fix in place, this test would have failed, the 
compat flag was not
+    // set.
+    CPPUNIT_ASSERT(bDontBreakWrappedTables);
+}
 }
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx
index 6c26910af08f..e22351e477df 100644
--- a/sw/source/filter/ww8/wrtww8.cxx
+++ b/sw/source/filter/ww8/wrtww8.cxx
@@ -557,6 +557,9 @@ static void WriteDop( WW8Export& rWrt )
 
     rDop.fExpShRtn = 
!rWrt.m_rDoc.getIDocumentSettingAccess().get(DocumentSettingId::DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK);
 // #i56856#
 
+    IDocumentSettingAccess& rIDSA = rWrt.m_rDoc.getIDocumentSettingAccess();
+    rDop.fDontBreakWrappedTables = 
rIDSA.get(DocumentSettingId::DO_NOT_BREAK_WRAPPED_TABLES);
+
     rDop.Write( *rWrt.m_pTableStrm, *rWrt.m_pFib );
 }
 
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
index 348d95d5cea0..1a328ebf8e54 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -1938,6 +1938,12 @@ void SwWW8ImplReader::ImportDop()
     
m_rDoc.getIDocumentSettingAccess().set(DocumentSettingId::CONTINUOUS_ENDNOTES, 
true);
     // rely on default for HYPHENATE_URLS=false
 
+    IDocumentSettingAccess& rIDSA = m_rDoc.getIDocumentSettingAccess();
+    if (m_xWDop->fDontBreakWrappedTables)
+    {
+        rIDSA.set(DocumentSettingId::DO_NOT_BREAK_WRAPPED_TABLES, true);
+    }
+
     // COMPATIBILITY FLAGS END
 
     // Import magic doptypography information, if it's there
diff --git a/sw/source/filter/ww8/ww8scan.cxx b/sw/source/filter/ww8/ww8scan.cxx
index 925548c70dc5..517a14a5f02d 100644
--- a/sw/source/filter/ww8/ww8scan.cxx
+++ b/sw/source/filter/ww8/ww8scan.cxx
@@ -7635,7 +7635,7 @@ WW8Dop::WW8Dop(SvStream& rSt, sal_Int16 nFib, sal_Int32 
nPos, sal_uInt32 nSize):
     fCompatibilityOptions_Unknown2_5(false), 
fCompatibilityOptions_Unknown2_6(false),
     fCompatibilityOptions_Unknown2_7(false), 
fCompatibilityOptions_Unknown2_8(false),
     fCompatibilityOptions_Unknown2_9(false), 
fCompatibilityOptions_Unknown2_10(false),
-    fCompatibilityOptions_Unknown2_11(false), 
fCompatibilityOptions_Unknown2_12(false),
+    fDontBreakWrappedTables(false), fCompatibilityOptions_Unknown2_12(false),
     fCompatibilityOptions_Unknown2_13(false), 
fCompatibilityOptions_Unknown2_14(false),
     fCompatibilityOptions_Unknown2_15(false), 
fCompatibilityOptions_Unknown2_16(false),
     fCompatibilityOptions_Unknown2_17(false), 
fCompatibilityOptions_Unknown2_18(false),
@@ -7906,7 +7906,7 @@ WW8Dop::WW8Dop():
     fCompatibilityOptions_Unknown2_5(false), 
fCompatibilityOptions_Unknown2_6(false),
     fCompatibilityOptions_Unknown2_7(false), 
fCompatibilityOptions_Unknown2_8(false),
     fCompatibilityOptions_Unknown2_9(false), 
fCompatibilityOptions_Unknown2_10(false),
-    fCompatibilityOptions_Unknown2_11(false), 
fCompatibilityOptions_Unknown2_12(false),
+    fDontBreakWrappedTables(false), fCompatibilityOptions_Unknown2_12(false),
     fCompatibilityOptions_Unknown2_13(false), 
fCompatibilityOptions_Unknown2_14(false),
     fCompatibilityOptions_Unknown2_15(false), 
fCompatibilityOptions_Unknown2_16(false),
     fCompatibilityOptions_Unknown2_17(false), 
fCompatibilityOptions_Unknown2_18(false),
@@ -8023,7 +8023,7 @@ void WW8Dop::SetCompatibilityOptions2(sal_uInt32 a32Bit)
     fCompatibilityOptions_Unknown2_8                 = ( a32Bit &  0x00000080 
) >>  7 ;
     fCompatibilityOptions_Unknown2_9                 = ( a32Bit &  0x00000100 
) >>  8 ;
     fCompatibilityOptions_Unknown2_10                    = ( a32Bit &  
0x00000200 ) >>  9 ;
-    fCompatibilityOptions_Unknown2_11                    = ( a32Bit &  
0x00000400 ) >> 10 ;
+    fDontBreakWrappedTables                              = ( a32Bit &  
0x00000400 ) >> 10 ;
     fCompatibilityOptions_Unknown2_12                    = ( a32Bit &  
0x00000800 ) >> 11 ;
     fCompatibilityOptions_Unknown2_13                   = ( a32Bit &  
0x00001000 ) >> 12 ;
     fCompatibilityOptions_Unknown2_14                   = ( a32Bit &  
0x00002000 ) >> 13 ;
@@ -8060,7 +8060,7 @@ sal_uInt32 WW8Dop::GetCompatibilityOptions2() const
     if (fCompatibilityOptions_Unknown2_8)           a32Bit |= 0x00000080;
     if (fCompatibilityOptions_Unknown2_9)           a32Bit |= 0x00000100;
     if (fCompatibilityOptions_Unknown2_10)          a32Bit |= 0x00000200;
-    if (fCompatibilityOptions_Unknown2_11)          a32Bit |= 0x00000400;
+    if (fDontBreakWrappedTables)                    a32Bit |= 0x00000400;
     if (fCompatibilityOptions_Unknown2_12)          a32Bit |= 0x00000800;
     if (fCompatibilityOptions_Unknown2_13)          a32Bit |= 0x00001000;
     //#i42909# set thai "line breaking rules" compatibility option
diff --git a/sw/source/filter/ww8/ww8scan.hxx b/sw/source/filter/ww8/ww8scan.hxx
index 621956be9c9f..f3bf7792b3bb 100644
--- a/sw/source/filter/ww8/ww8scan.hxx
+++ b/sw/source/filter/ww8/ww8scan.hxx
@@ -1781,6 +1781,7 @@ public:
     sal_Int16 hpsZoomFontPag = 0;
     sal_Int16 dywDispPag = 0;
 
+     // [MS-DOC] 2.7.11 Copts A..H
      bool       fCompatibilityOptions_Unknown2_1 : 1 /*= false*/;  // #i78591#
      bool       fCompatibilityOptions_Unknown2_2 : 1 /*= false*/;  // #i78591#
      bool       fDontUseHTMLAutoSpacing : 1 /*= false*/;
@@ -1789,13 +1790,17 @@ public:
      bool       fCompatibilityOptions_Unknown2_6 : 1 /*= false*/;  // #i78591#
      bool       fCompatibilityOptions_Unknown2_7 : 1 /*= false*/;  // #i78591#
      bool       fCompatibilityOptions_Unknown2_8 : 1 /*= false*/;  // #i78591#
+
+     // [MS-DOC] 2.7.11 Copts I..P
      bool       fCompatibilityOptions_Unknown2_9 : 1 /*= false*/;  // #i78591#
      bool       fCompatibilityOptions_Unknown2_10 : 1 /*= false*/; // #i78591#
-     bool       fCompatibilityOptions_Unknown2_11 : 1 /*= false*/; // #i78591#
+     bool       fDontBreakWrappedTables : 1 /*= false*/; // #i78591#
      bool       fCompatibilityOptions_Unknown2_12 : 1 /*= false*/; // #i78591#
      bool       fCompatibilityOptions_Unknown2_13 : 1 /*= false*/; // #i78591#
      bool       fCompatibilityOptions_Unknown2_14 : 1 /*= false*/; // #i78591#
      bool       fCompatibilityOptions_Unknown2_15 : 1 /*= false*/; // #i78591#
+
+     // [MS-DOC] 2.7.11 Copts Q..X
      bool       fCompatibilityOptions_Unknown2_16 : 1 /*= false*/; // #i78591#
      bool       fCompatibilityOptions_Unknown2_17 : 1 /*= false*/; // #i78591#
      bool       fCompatibilityOptions_Unknown2_18 : 1 /*= false*/; // #i78591#
@@ -1804,6 +1809,8 @@ public:
      bool       fCompatibilityOptions_Unknown2_21 : 1 /*= false*/; // #i78591#
      bool       fCompatibilityOptions_Unknown2_22 : 1 /*= false*/; // #i78591#
      bool       fCompatibilityOptions_Unknown2_23 : 1 /*= false*/; // #i78591#
+
+     // [MS-DOC] 2.7.11 Copts Y..f
      bool       fCompatibilityOptions_Unknown2_24 : 1 /*= false*/; // #i78591#
      bool       fCompatibilityOptions_Unknown2_25 : 1 /*= false*/; // #i78591#
      bool       fCompatibilityOptions_Unknown2_26 : 1 /*= false*/; // #i78591#
@@ -1812,6 +1819,8 @@ public:
      bool       fCompatibilityOptions_Unknown2_29 : 1 /*= false*/; // #i78591#
      bool       fCompatibilityOptions_Unknown2_30 : 1 /*= false*/; // #i78591#
      bool       fCompatibilityOptions_Unknown2_31 : 1 /*= false*/; // #i78591#
+
+     // [MS-DOC] 2.7.11 Copts g
      bool       fCompatibilityOptions_Unknown2_32 : 1 /*= false*/; // #i78591#
 
      sal_uInt16 fUnknown3 : 15 /*= 0*/;

Reply via email to