diff options
author | László Németh <nemeth@numbertext.org> | 2019-10-02 14:57:16 +0200 |
---|---|---|
committer | László Németh <nemeth@numbertext.org> | 2019-10-03 07:59:10 +0200 |
commit | f9aac900ada3d507526eeeed5b51fc7a10ab4cae (patch) | |
tree | dbfbd92ceecadd91dd4f8b931ac486a37de671a9 /writerfilter/source | |
parent | 1af2f8f75e4e15c1b0c3e5a04e405fc4b354ef2b (diff) |
tdf#81100 DOCX import: repeat header according to table style
Table style based repeating table header wasn't repeated,
only direct table formatting.
Change-Id: I119e6d32bf22c6c85a84aa42ae4cd6c5f60166b2
Reviewed-on: https://gerrit.libreoffice.org/80053
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
Diffstat (limited to 'writerfilter/source')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapperTableHandler.cxx | 29 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapperTableManager.cxx | 9 | ||||
-rw-r--r-- | writerfilter/source/dmapper/TblStylePrHandler.cxx | 1 |
3 files changed, 26 insertions, 13 deletions
diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx index 90cb75dbbd5a..859c8c4415c5 100644 --- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx @@ -50,6 +50,18 @@ using namespace ::com::sun::star; using namespace ::std; #define DEF_BORDER_DIST 190 //0,19cm +#define CNF_FIRST_ROW 0x800 +#define CNF_LAST_ROW 0x400 +#define CNF_FIRST_COLUMN 0x200 +#define CNF_LAST_COLUMN 0x100 +#define CNF_ODD_VBAND 0x080 +#define CNF_EVEN_VBAND 0x040 +#define CNF_ODD_HBAND 0x020 +#define CNF_EVEN_HBAND 0x010 +#define CNF_FIRST_ROW_LAST_COLUMN 0x008 +#define CNF_FIRST_ROW_FIRST_COLUMN 0x004 +#define CNF_LAST_ROW_LAST_COLUMN 0x002 +#define CNF_LAST_ROW_FIRST_COLUMN 0x001 DomainMapperTableHandler::DomainMapperTableHandler( css::uno::Reference<css::text::XTextAppendAndConvert> const& xText, @@ -427,6 +439,10 @@ TableStyleSheetEntry * DomainMapperTableHandler::endTableGetTableStyle(TableInfo m_aTableProperties->dumpXml(); TagLogger::getInstance().endElement(); #endif + // apply tblHeader setting of the table style + PropertyMapPtr pHeaderStyleProps = pTableStyle->GetProperties(CNF_FIRST_ROW); + if ( pHeaderStyleProps->getProperty(PROP_HEADER_ROW_COUNT) ) + m_aTableProperties->Insert(PROP_HEADER_ROW_COUNT, uno::makeAny( sal_Int32(1)), false); } } @@ -630,19 +646,6 @@ TableStyleSheetEntry * DomainMapperTableHandler::endTableGetTableStyle(TableInfo return pTableStyle; } -#define CNF_FIRST_ROW 0x800 -#define CNF_LAST_ROW 0x400 -#define CNF_FIRST_COLUMN 0x200 -#define CNF_LAST_COLUMN 0x100 -#define CNF_ODD_VBAND 0x080 -#define CNF_EVEN_VBAND 0x040 -#define CNF_ODD_HBAND 0x020 -#define CNF_EVEN_HBAND 0x010 -#define CNF_FIRST_ROW_LAST_COLUMN 0x008 -#define CNF_FIRST_ROW_FIRST_COLUMN 0x004 -#define CNF_LAST_ROW_LAST_COLUMN 0x002 -#define CNF_LAST_ROW_FIRST_COLUMN 0x001 - CellPropertyValuesSeq_t DomainMapperTableHandler::endTableGetCellProperties(TableInfo & rInfo, std::vector<HorizontallyMergedCell>& rMerges) { #ifdef DBG_UTIL diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.cxx b/writerfilter/source/dmapper/DomainMapperTableManager.cxx index 13a14fb2c3d0..6adbcdc075f7 100644 --- a/writerfilter/source/dmapper/DomainMapperTableManager.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableManager.cxx @@ -225,7 +225,16 @@ bool DomainMapperTableManager::sprm(Sprm & rSprm) insertTableProps(pPropMap); } else + { + if ( nIntValue == 0 && m_nRow == 0 ) + { + // explicit tblHeader=0 in the first row must overwrite table style + TablePropertyMapPtr pPropMap( new TablePropertyMap ); + pPropMap->Insert( PROP_HEADER_ROW_COUNT, uno::makeAny(sal_Int32(0))); + insertTableProps(pPropMap); + } m_nHeaderRepeat = -1; + } if (nIntValue) { // Store the info that this is a header, we'll need that when we apply table styles. diff --git a/writerfilter/source/dmapper/TblStylePrHandler.cxx b/writerfilter/source/dmapper/TblStylePrHandler.cxx index c47042f30b53..674bb5bd2250 100644 --- a/writerfilter/source/dmapper/TblStylePrHandler.cxx +++ b/writerfilter/source/dmapper/TblStylePrHandler.cxx @@ -162,6 +162,7 @@ void TblStylePrHandler::lcl_sprm(Sprm & rSprm) break; case NS_ooxml::LN_CT_TrPrBase_tblHeader: { + m_pProperties->Insert( PROP_HEADER_ROW_COUNT, uno::makeAny(sal_Int32(1))); beans::PropertyValue aValue; aValue.Name = "tblHeader"; aValue.Value <<= true; |