sw/source/filter/html/htmlsect.cxx | 2 +- sw/source/filter/html/htmltab.cxx | 32 +++++++++++++++++++++++++++++++- sw/source/filter/html/swhtml.hxx | 2 +- 3 files changed, 33 insertions(+), 3 deletions(-)
New commits: commit 9e269ef68e33fc9da154f6694be7cbcd5e3b4bfc Author: Caolán McNamara <caol...@redhat.com> Date: Mon Jan 1 17:13:50 2018 +0000 ofz#4817 Bad-cast Change-Id: I5dc9c66ce17f6401fbc9683cf8b10bf62755a166 Reviewed-on: https://gerrit.libreoffice.org/47236 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/sw/source/filter/html/htmlsect.cxx b/sw/source/filter/html/htmlsect.cxx index e5c2cf1268f8..0b2facf82e62 100644 --- a/sw/source/filter/html/htmlsect.cxx +++ b/sw/source/filter/html/htmlsect.cxx @@ -195,7 +195,7 @@ void SwHTMLParser::NewDivision( HtmlTokenId nToken ) static_cast<const SwStartNode *>( &rContentStIdx.GetNode() ); aDelPam.GetPoint()->nNode = pStNd->EndOfSectionIndex() - 1; - if (!PendingTableInPaM(aDelPam)) + if (!PendingObjectsInPaM(aDelPam)) m_xDoc->getIDocumentContentOperations().DelFullPara(aDelPam); // update page style diff --git a/sw/source/filter/html/htmltab.cxx b/sw/source/filter/html/htmltab.cxx index d05d3a1fe6e6..d138e66612db 100644 --- a/sw/source/filter/html/htmltab.cxx +++ b/sw/source/filter/html/htmltab.cxx @@ -610,6 +610,8 @@ public: void IncBoxCount() { m_nBoxes++; } bool IsOverflowing() const { return m_nBoxes > 64000; } + + bool PendingDrawObjectsInPaM(SwPaM& rPam) const; }; void HTMLTableCnts::InitCtor() @@ -5277,11 +5279,39 @@ std::shared_ptr<HTMLTable> SwHTMLParser::BuildTable(SvxAdjust eParentAdjust, return xRetTable; } -bool SwHTMLParser::PendingTableInPaM(SwPaM& rPam) const +bool HTMLTable::PendingDrawObjectsInPaM(SwPaM& rPam) const +{ + if (!m_pResizeDrawObjects) + return false; + + bool bRet = false; + + sal_uInt16 nCount = m_pResizeDrawObjects->size(); + for (sal_uInt16 i = 0; i < nCount && !bRet; ++i) + { + SdrObject *pObj = (*m_pResizeDrawObjects)[i]; + SwFrameFormat* pObjectFormat = ::FindFrameFormat(pObj); + if (!pObjectFormat) + continue; + const SwFormatAnchor& rAnch = pObjectFormat->GetAnchor(); + if (const SwPosition* pPos = rAnch.GetContentAnchor()) + { + SwNodeIndex aObjNodeIndex(pPos->nNode); + bRet = (aObjNodeIndex >= rPam.Start()->nNode && aObjNodeIndex <= rPam.End()->nNode); + } + } + + return bRet; +} + +bool SwHTMLParser::PendingObjectsInPaM(SwPaM& rPam) const { bool bRet = false; for (const auto& a : m_aTables) { + bRet = a->PendingDrawObjectsInPaM(rPam); + if (bRet) + break; const SwTable *pTable = a->GetSwTable(); if (!pTable) continue; diff --git a/sw/source/filter/html/swhtml.hxx b/sw/source/filter/html/swhtml.hxx index 24996cf2d340..8d6130d6c70c 100644 --- a/sw/source/filter/html/swhtml.hxx +++ b/sw/source/filter/html/swhtml.hxx @@ -870,7 +870,7 @@ private: bool HasCurrentParaFlys( bool bNoSurroundOnly = false, bool bSurroundOnly = false ) const; - bool PendingTableInPaM(SwPaM& rPam) const; + bool PendingObjectsInPaM(SwPaM& rPam) const; public: // used in tables
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits