summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-12-21 11:24:52 +0000
committerCaolán McNamara <caolanm@redhat.com>2017-12-21 16:00:14 +0100
commitf297b0d043e0767d85f00aa1e4cae5b036b0ac51 (patch)
tree426d156ab573fc7be07b3785c3dc274510c879ec
parentb39e627be45f847554f11fdac040b6f4da4054ba (diff)
ofz: avoid deleting the table still being processed
Change-Id: Ia92d469fd0e280bdc6470e780ab12b00366f0f8d Reviewed-on: https://gerrit.libreoffice.org/46902 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--sw/source/filter/html/htmlsect.cxx3
-rw-r--r--sw/source/filter/html/htmltab.cxx14
-rw-r--r--sw/source/filter/html/swhtml.hxx2
3 files changed, 18 insertions, 1 deletions
diff --git a/sw/source/filter/html/htmlsect.cxx b/sw/source/filter/html/htmlsect.cxx
index 67fa9d916d8a..56149052609f 100644
--- a/sw/source/filter/html/htmlsect.cxx
+++ b/sw/source/filter/html/htmlsect.cxx
@@ -195,7 +195,8 @@ void SwHTMLParser::NewDivision( HtmlTokenId nToken )
static_cast<const SwStartNode *>( &rContentStIdx.GetNode() );
aDelPam.GetPoint()->nNode = pStNd->EndOfSectionIndex() - 1;
- m_xDoc->getIDocumentContentOperations().DelFullPara( aDelPam );
+ if (!CurrentTableInPaM(aDelPam))
+ m_xDoc->getIDocumentContentOperations().DelFullPara(aDelPam);
// update page style
for( size_t i=0; i < m_xDoc->GetPageDescCnt(); i++ )
diff --git a/sw/source/filter/html/htmltab.cxx b/sw/source/filter/html/htmltab.cxx
index 0f5f5ae162b1..7d40e971d559 100644
--- a/sw/source/filter/html/htmltab.cxx
+++ b/sw/source/filter/html/htmltab.cxx
@@ -5246,4 +5246,18 @@ std::shared_ptr<HTMLTable> SwHTMLParser::BuildTable(SvxAdjust eParentAdjust,
return xRetTable;
}
+bool SwHTMLParser::CurrentTableInPaM(SwPaM& rPam) const
+{
+ if (!m_xTable)
+ return false;
+ const SwTable *pTable = m_xTable->GetSwTable();
+ if (!pTable)
+ return false;
+ const SwTableNode* pTableNode = pTable->GetTableNode();
+ if (!pTableNode)
+ return false;
+ SwNodeIndex aTableNodeIndex(*pTableNode);
+ return (aTableNodeIndex >= rPam.Start()->nNode && aTableNodeIndex <= rPam.End()->nNode);
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/html/swhtml.hxx b/sw/source/filter/html/swhtml.hxx
index a023d3549cfa..1392192852a9 100644
--- a/sw/source/filter/html/swhtml.hxx
+++ b/sw/source/filter/html/swhtml.hxx
@@ -867,6 +867,8 @@ private:
bool HasCurrentParaFlys( bool bNoSurroundOnly = false,
bool bSurroundOnly = false ) const;
+ bool CurrentTableInPaM(SwPaM& rPam) const;
+
public: // used in tables
// Create brush item (with new) or 0