summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2023-08-24 08:34:38 +0200
committerMiklos Vajna <vmiklos@collabora.com>2023-08-24 10:19:07 +0200
commit178421a6c719dac9c16f220b76292fec16a53f60 (patch)
tree1eae6071d42b23ba580cb0b2f74b3db9246c536c /writerfilter
parentbf1e649e6f626268db99d20ae921669ed557c3af (diff)
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. Change-Id: I90a5f0228385b2e3db8d994c6c76064fe595f439 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156024 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableHandler.cxx12
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableHandler.hxx5
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx1
3 files changed, 2 insertions, 16 deletions
diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
index 5b0971eee20f..a942e303cae9 100644
--- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
@@ -88,8 +88,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 )
{
}
@@ -1546,8 +1545,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;
@@ -1675,7 +1673,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();
@@ -1752,11 +1749,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 d9faf0c206a4..4b7e91978128 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -9355,7 +9355,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;
}