sw/inc/swtable.hxx | 4 +++- sw/inc/tblsel.hxx | 8 ++++++-- sw/source/core/doc/gctable.cxx | 15 +++++++++++++++ sw/source/core/docnode/node.cxx | 2 ++ 4 files changed, 26 insertions(+), 3 deletions(-)
New commits: commit e65b1ba0033e1adaa4135539bb7b34b28cbedd7c Author: Michael Stahl <[email protected]> AuthorDate: Thu Oct 1 17:29:06 2020 +0200 Commit: Michael Stahl <[email protected]> CommitDate: Mon Oct 5 12:54:09 2020 +0200 sw: SwTable::GCLines(): don't throw away row background If there's a row background, and a cell in the row doesn't override it, apply the row background to the cell. Change-Id: I37cd33249d3ab66c898c537e3bc6bab067d6f74b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103772 Tested-by: Jenkins Reviewed-by: Michael Stahl <[email protected]> diff --git a/sw/source/core/doc/gctable.cxx b/sw/source/core/doc/gctable.cxx index 355eb70538dd..7f428dee033c 100644 --- a/sw/source/core/doc/gctable.cxx +++ b/sw/source/core/doc/gctable.cxx @@ -360,6 +360,21 @@ static bool lcl_MergeGCBox(SwTableBox* pTableBox, GCLinePara* pPara) for( auto pTabBox : pCpyLine->GetTabBoxes() ) pTabBox->SetUpper( pInsLine ); + SfxPoolItem const* pRowBrush(nullptr); + pCpyLine->GetFrameFormat()->GetItemState(RES_BACKGROUND, true, &pRowBrush); + if (pRowBrush) + { + for (auto pBox : pCpyLine->GetTabBoxes()) + { + SfxPoolItem const* pCellBrush(nullptr); + if (pBox->GetFrameFormat()->GetItemState(RES_BACKGROUND, true, &pCellBrush) != SfxItemState::SET) + { // set inner row background on inner cell + pBox->ClaimFrameFormat(); + pBox->GetFrameFormat()->SetFormatAttr(*pRowBrush); + } + } + } + // remove the old box from its parent line it = pInsLine->GetTabBoxes().erase( it ); // insert the nested line's boxes in its place commit 309868c32f00e5ca045f941deafb5216aad2538c Author: Michael Stahl <[email protected]> AuthorDate: Thu Oct 1 17:26:43 2020 +0200 Commit: Michael Stahl <[email protected]> CommitDate: Mon Oct 5 12:53:55 2020 +0200 sw: improve comments, dump rowspan to nodes.xml Change-Id: Ifcd011f6d55ac534c449050d07009680dcd71d51 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103771 Tested-by: Jenkins Reviewed-by: Michael Stahl <[email protected]> diff --git a/sw/inc/swtable.hxx b/sw/inc/swtable.hxx index bb43c2e86388..66a1795ce183 100644 --- a/sw/inc/swtable.hxx +++ b/sw/inc/swtable.hxx @@ -310,7 +310,9 @@ public: // Search in format for registered table. static SwTable * FindTable( SwFrameFormat const*const pFormat ); - // Clean up structure a bit. + // Clean up structure of subtables a bit: + // convert row with 1 box with subtable; box with subtable with 1 row; + // by removing the subtable (both recursively) void GCLines(); // Returns the table node via m_TabSortContentBoxes or pTableNode. diff --git a/sw/inc/tblsel.hxx b/sw/inc/tblsel.hxx index 4d929ba224a7..35f88cb9bb54 100644 --- a/sw/inc/tblsel.hxx +++ b/sw/inc/tblsel.hxx @@ -160,8 +160,8 @@ class FndBox_ FndLines_t m_Lines; FndLine_* m_pUpper; - SwTableLine *m_pLineBefore; // For deleting/restoring the layout. - SwTableLine *m_pLineBehind; + SwTableLine *m_pLineBefore; ///< For deleting/restoring the layout. + SwTableLine *m_pLineBehind; ///< For deleting/restoring the layout. FndBox_(FndBox_ const&) = delete; FndBox_& operator=(FndBox_ const&) = delete; @@ -224,6 +224,10 @@ struct FndPara : rBoxes(rPara.rBoxes), pFndLine(pFL), pFndBox(rPara.pFndBox) {} }; +/** This creates a structure mirroring the SwTable structure that contains all + rows and non-leaf boxes (as pointers to SwTableBox/SwTableLine, not copies), + plus the leaf boxes that are selected by pFndPara->rBoxes + */ SW_DLLPUBLIC void ForEach_FndLineCopyCol(SwTableLines& rLines, FndPara* pFndPara ); #endif // INCLUDED_SW_INC_TBLSEL_HXX diff --git a/sw/source/core/docnode/node.cxx b/sw/source/core/docnode/node.cxx index 94beca340c78..b65b45fe5196 100644 --- a/sw/source/core/docnode/node.cxx +++ b/sw/source/core/docnode/node.cxx @@ -1028,6 +1028,8 @@ void SwStartNode::dumpAsXml(xmlTextWriterPtr pWriter) const } else if (GetStartNodeType() == SwTableBoxStartNode) { + if (SwTableBox* pBox = GetTableBox()) + xmlTextWriterWriteAttribute(pWriter, BAD_CAST("rowspan"), BAD_CAST(OString::number(pBox->getRowSpan()).getStr())); xmlTextWriterStartElement(pWriter, BAD_CAST("attrset")); if (SwTableBox* pBox = GetTableBox()) pBox->GetFrameFormat()->GetAttrSet().dumpAsXml(pWriter); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
