sw/qa/extras/ooxmlexport/ooxmlexport10.cxx               |    6 ++++++
 writerfilter/source/dmapper/DomainMapperTableHandler.cxx |   12 ++----------
 writerfilter/source/dmapper/DomainMapperTableHandler.hxx |    5 -----
 writerfilter/source/dmapper/DomainMapper_Impl.cxx        |    1 -
 4 files changed, 8 insertions(+), 16 deletions(-)

New commits:
commit 713359b5fd80ced499c168d4db8fefc0929508dd
Author:     Miklos Vajna <vmik...@collabora.com>
AuthorDate: Thu Aug 24 08:34:38 2023 +0200
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Fri Aug 25 15:23:52 2023 +0200

    tdf#77760 sw floattable: add support for footnotes, DOCX import
    
    This was originally added in commit
    2fe248f2b36d541c0d243a620c217058a50a9d5d (tdf#87460 DOCX import: fix
    missing endnote in floattable, 2015-06-23), because Writer core only
    allows footnotes in floating tables since commit
    56da1d30afe48cc4acd79567052a575e81f8c7a0 (tdf#77760 sw floattable: add
    support for footnotes, doc model, 2023-08-22).
    
    The DOCX export works already.
    
    The ODT filter also works: there is a mechanism to try to not insert
    footnotes in text frames, but the way XMLTextImportHelper::IsInFrame()
    is implemented means that it only rejects footnotes directly in text
    frames, not in tables-in-textframes, which is the interesting case for
    us.
    
    (cherry picked from commit 178421a6c719dac9c16f220b76292fec16a53f60)
    
    Conflicts:
            sw/qa/extras/ooxmlexport/ooxmlexport19.cxx
    
    Change-Id: I90a5f0228385b2e3db8d994c6c76064fe595f439
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156084
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
index d19dbd68b40c..c9bfc2e97d45 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
@@ -958,6 +958,12 @@ DECLARE_OOXMLEXPORT_TEST(testTdf87460, "tdf87460.docx")
     uno::Reference<container::XIndexAccess> xEndnotes = 
xEndnotesSupplier->getEndnotes();
     // This was 0: endnote was lost on import.
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), xEndnotes->getCount());
+
+    // Also make sure that <w:tblpPr> is mapped to a text frame (hosting the 
table):
+    uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, 
uno::UNO_QUERY);
+    uno::Reference<container::XNameAccess> xTextFrames = 
xTextFramesSupplier->getTextFrames();
+    // Without the fix in place, this test would have failed, the table was 
inline.
+    CPPUNIT_ASSERT(xTextFrames->hasByName("Frame1"));
 }
 
 DECLARE_OOXMLEXPORT_TEST(testTdf90611, "tdf90611.docx")
diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx 
b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
index 33d14ac7f435..44749e7b124f 100644
--- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
@@ -90,8 +90,7 @@ DomainMapperTableHandler::DomainMapperTableHandler(
             css::uno::Reference<css::text::XTextAppendAndConvert> xText,
             DomainMapper_Impl& rDMapper_Impl)
     : m_xText(std::move(xText)),
-        m_rDMapper_Impl( rDMapper_Impl ),
-        m_bHadFootOrEndnote(false)
+        m_rDMapper_Impl( rDMapper_Impl )
 {
 }
 
@@ -1549,8 +1548,7 @@ void DomainMapperTableHandler::endTable(unsigned int 
nestedTableLevel, bool bTab
         }
 
         // If we have a table with a start and an end position, we should make 
it a floating one.
-        // Unless the table had a foot or endnote, as Writer doesn't support 
those in TextFrames.
-        if (xTable.is() && xStart.is() && xEnd.is() && !m_bHadFootOrEndnote)
+        if (xTable.is() && xStart.is() && xEnd.is())
         {
             uno::Reference<beans::XPropertySet> xTableProperties(xTable, 
uno::UNO_QUERY);
             bool bIsRelative = false;
@@ -1678,7 +1676,6 @@ void DomainMapperTableHandler::endTable(unsigned int 
nestedTableLevel, bool bTab
     m_aTableProperties.clear();
     m_aCellProperties.clear();
     m_aRowProperties.clear();
-    m_bHadFootOrEndnote = false;
 
 #ifdef DBG_UTIL
     TagLogger::getInstance().endElement();
@@ -1755,11 +1752,6 @@ void DomainMapperTableHandler::endCell(const 
css::uno::Reference< css::text::XTe
     m_aRowRanges.push_back(comphelper::containerToSequence(m_aCellRange));
 }
 
-void DomainMapperTableHandler::setHadFootOrEndnote(bool bHadFootOrEndnote)
-{
-    m_bHadFootOrEndnote = bHadFootOrEndnote;
-}
-
 DomainMapper_Impl& DomainMapperTableHandler::getDomainMapperImpl()
 {
     return m_rDMapper_Impl;
diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.hxx 
b/writerfilter/source/dmapper/DomainMapperTableHandler.hxx
index f05fc1e474f1..d67c4d26bb7c 100644
--- a/writerfilter/source/dmapper/DomainMapperTableHandler.hxx
+++ b/writerfilter/source/dmapper/DomainMapperTableHandler.hxx
@@ -67,9 +67,6 @@ class DomainMapperTableHandler final : public virtual 
SvRefBase
     PropertyMapVector1      m_aRowProperties;
     TablePropertyMapPtr     m_aTableProperties;
 
-    /// Did we have a foot or endnote in this table?
-    bool m_bHadFootOrEndnote;
-
     TableStyleSheetEntry * endTableGetTableStyle(TableInfo & rInfo,
                     std::vector<css::beans::PropertyValue>& rFrameProperties,
                     bool bConvertToFloating);
@@ -116,8 +113,6 @@ public:
     */
     void endCell(const css::uno::Reference< css::text::XTextRange > & end);
 
-    void setHadFootOrEndnote(bool bHadFootOrEndnote);
-
     DomainMapper_Impl& getDomainMapperImpl();
 };
 
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx 
b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index f89d0321167d..8f21f04e03ac 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -9173,7 +9173,6 @@ void DomainMapper_Impl::substream(Id rName,
     {
     case NS_ooxml::LN_footnote:
     case NS_ooxml::LN_endnote:
-        m_pTableHandler->setHadFootOrEndnote(true);
         m_bHasFtn = true;
         break;
     }

Reply via email to