sw/qa/extras/odfexport/data/gerrit13858.odt |binary sw/qa/extras/odfexport/odfexport.cxx | 5 ++++ sw/source/core/doc/textboxhelper.cxx | 31 +++++++++++++++++++++++----- sw/source/filter/xml/xmltble.cxx | 4 +-- 4 files changed, 33 insertions(+), 7 deletions(-)
New commits: commit 8d758d0764beb78a49f3035c254eb085b112c2b1 Author: Miklos Vajna <[email protected]> Date: Sun Jan 18 21:17:03 2015 +0100 SwTextBoxHelper::findTextBoxes: optimize unnecessary O(n^2) Change-Id: Ib127b6cf44a69709673465db99cc79417b18c266 diff --git a/sw/source/core/doc/textboxhelper.cxx b/sw/source/core/doc/textboxhelper.cxx index d447b5b..f5096a0 100644 --- a/sw/source/core/doc/textboxhelper.cxx +++ b/sw/source/core/doc/textboxhelper.cxx @@ -114,17 +114,38 @@ void SwTextBoxHelper::destroy(SwFrmFmt* pShape) std::set<const SwFrmFmt*> SwTextBoxHelper::findTextBoxes(const SwDoc* pDoc) { - std::set<const SwFrmFmt*> aRet; + std::set<const SwFrmFmt*> aTextBoxes; + std::map<SwNodeIndex, const SwFrmFmt*> aFlyFormats, aDrawFormats; const SwFrmFmts& rSpzFrmFmts = *pDoc->GetSpzFrmFmts(); for (SwFrmFmts::const_iterator it = rSpzFrmFmts.begin(); it != rSpzFrmFmts.end(); ++it) { - SwFrmFmt* pTextBox = findTextBox(*it); - if (pTextBox) - aRet.insert(pTextBox); + const SwFrmFmt* pFormat = *it; + + // A TextBox in the context of this class is a fly frame that has a + // matching (same RES_CNTNT) draw frame. + if (!pFormat->GetAttrSet().HasItem(RES_CNTNT) || !pFormat->GetCntnt().GetCntntIdx()) + continue; + + const SwNodeIndex& rIndex = *pFormat->GetCntnt().GetCntntIdx(); + + if (pFormat->Which() == RES_FLYFRMFMT) + { + if (aDrawFormats.find(rIndex) != aDrawFormats.end()) + aTextBoxes.insert(pFormat); + else + aFlyFormats[rIndex] = pFormat; + } + else if (pFormat->Which() == RES_DRAWFRMFMT) + { + if (aFlyFormats.find(rIndex) != aFlyFormats.end()) + aTextBoxes.insert(aFlyFormats[rIndex]); + else + aDrawFormats[rIndex] = pFormat; + } } - return aRet; + return aTextBoxes; } std::set<const SwFrmFmt*> SwTextBoxHelper::findTextBoxes(const SwNode& rNode) commit 80eb001e6a861c68f2915d4eebded5e36e1875f6 Author: Miklos Vajna <[email protected]> Date: Sun Jan 18 21:16:55 2015 +0100 ODT export: fix namespace of <table:covered-table-cell> inside shapes Change-Id: If96b46bac7f8212cfb83dc8b4528986137f1eaea diff --git a/sw/qa/extras/odfexport/data/gerrit13858.odt b/sw/qa/extras/odfexport/data/gerrit13858.odt new file mode 100644 index 0000000..9b3dd37 Binary files /dev/null and b/sw/qa/extras/odfexport/data/gerrit13858.odt differ diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx index 77ae4ec..f23c2a3 100644 --- a/sw/qa/extras/odfexport/odfexport.cxx +++ b/sw/qa/extras/odfexport/odfexport.cxx @@ -432,6 +432,11 @@ DECLARE_ODFEXPORT_TEST(testFdo86963, "fdo86963.odt") CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDrawPage->getCount()); } +DECLARE_ODFEXPORT_TEST(testGerrit13858, "gerrit13858.odt") +{ + // Just make sure the output is valid. +} + #endif CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/filter/xml/xmltble.cxx b/sw/source/filter/xml/xmltble.cxx index de682f2..b1db68f 100644 --- a/sw/source/filter/xml/xmltble.cxx +++ b/sw/source/filter/xml/xmltble.cxx @@ -897,7 +897,7 @@ void SwXMLExport::ExportTableLine( const SwTableLine& rLine, const long nRowSpan = pBox->getRowSpan(); if( nRowSpan < 1 ) { - SvXMLElementExport aElem2( *this, XML_NAMESPACE_TABLE, + SvXMLElementExport aElem2( *this, rTblInfo.GetPrefix(), XML_COVERED_TABLE_CELL, true, false ); } @@ -930,7 +930,7 @@ void SwXMLExport::ExportTableLine( const SwTableLine& rLine, for( size_t i=nOldCol; i<nCol; ++i ) { - SvXMLElementExport aElemExport( *this, XML_NAMESPACE_TABLE, + SvXMLElementExport aElemExport( *this, rTblInfo.GetPrefix(), XML_COVERED_TABLE_CELL, true, false ); } _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
