summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2013-09-02 10:27:49 +0200
committerMiklos Vajna <vmiklos@suse.cz>2013-09-03 17:08:03 +0200
commit5e502cf754e7c08e098ba401610aef76b4244f1f (patch)
tree40f2756276826cc20a5091f778397dd0624bb7d2 /writerfilter
parentfc01e55ded5b517307a28a9ac8c438ce9ea5f967 (diff)
bnc#816593 DOCX import: ignore page breaks in tables
(cherry picked from commit 7d3778e0ef9f54f3c8988f1b84d58e7002d6c625) Conflicts: writerfilter/source/dmapper/DomainMapper.cxx Change-Id: Ibb250148d41d1929fa17dd993bb71c93c0e09dcf Conflicts: writerfilter/source/dmapper/DomainMapper_Impl.cxx
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx6
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx9
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.hxx9
-rw-r--r--writerfilter/source/ooxml/OOXMLFastContextHandler.cxx10
-rw-r--r--writerfilter/source/ooxml/model.xml1
5 files changed, 34 insertions, 1 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 4d0d7217cb2a..03d1c852f92a 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -3332,6 +3332,12 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType
}
}
break;
+ case NS_ooxml::LN_tblStart:
+ m_pImpl->m_nTableDepth++;
+ break;
+ case NS_ooxml::LN_tblEnd:
+ m_pImpl->m_nTableDepth--;
+ break;
default:
{
#ifdef DEBUG_DOMAINMAPPER
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 8f1af5aff78d..07654c6f80a1 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -193,7 +193,9 @@ DomainMapper_Impl::DomainMapper_Impl(
m_bSdt(false),
m_xInsertTextRange(xInsertTextRange),
m_bIsNewDoc(bIsNewDoc),
- m_pSdtHelper(0)
+ m_pSdtHelper(0),
+ m_nTableDepth(0)
+
{
appendTableManager( );
GetBodyText();
@@ -632,6 +634,11 @@ void DomainMapper_Impl::deferBreak( BreakType deferredBreakType)
m_bIsColumnBreakDeferred = true;
break;
case PAGE_BREAK:
+ // See SwWW8ImplReader::HandlePageBreakChar(), page break should be
+ // ignored inside tables.
+ if (m_nTableDepth > 0)
+ return;
+
m_bIsPageBreakDeferred = true;
break;
default:
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index e2a43b631f31..ccca0dcdd58d 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -683,6 +683,15 @@ public:
/// Document background color, applied to every page style.
boost::optional<sal_Int32> m_oBackgroundColor;
+
+ /**
+ * This contains the raw table depth. m_nTableDepth > 0 is the same as
+ * getTableManager().isInTable(), unless we're in the first paragraph of a
+ * table, or first paragraph after a table, as the table manager is only
+ * updated once we ended the paragraph (and know if the para has the
+ * PFInTable SPRM or not).
+ */
+ sal_Int32 m_nTableDepth;
};
} //namespace dmapper
} //namespace writerfilter
diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
index d4068560a9f9..4d4ac65e2632 100644
--- a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
+++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
@@ -1943,6 +1943,16 @@ void OOXMLFastContextHandlerTextTable::lcl_endFastElement
{
endAction(Element);
+ boost::shared_ptr<OOXMLPropertySet> pProps( new OOXMLPropertySetImpl );
+ {
+ OOXMLValue::Pointer_t pVal
+ (new OOXMLIntegerValue(mnTableDepth));
+ OOXMLProperty::Pointer_t pProp
+ (new OOXMLPropertyImpl(NS_ooxml::LN_tblEnd, pVal, OOXMLPropertyImpl::SPRM));
+ pProps->add(pProp);
+ }
+ mpParserState->setCharacterProperties(pProps);
+
mnTableDepth--;
mpParserState->endTable();
}
diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
index 6f27ef66e844..ff1d618fa5ee 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -38,6 +38,7 @@
<token tokenid="ooxml:trackchange"/>
<token tokenid="ooxml:object"/>
<token tokenid="ooxml:tblStart"/>
+ <token tokenid="ooxml:tblEnd"/>
<token tokenid="ooxml:ffdata"/>
<token tokenid="ooxml:starmath"/>
<namespace name="dml-stylesheet" url="http://schemas.openxmlformats.org/drawingml/2006/main" file="dml-stylesheet.rng">