From adc000a73c3699f4d1d53ba7151eadd2ea5f8940 Mon Sep 17 00:00:00 2001 From: Kurt Zenker Date: Thu, 4 Jun 2009 20:36:53 +0000 Subject: CWS-TOOLING: integrate CWS calclinkfixes 2009-04-27 11:47:56 +0200 nn r271258 : #i101273# Uno broadcasts in DoRecalc/DoHardRecalc 2009-04-24 17:20:19 +0200 nn r271226 : #i101304# don't load source file of external ref for empty cells in the cached data 2009-04-24 14:15:43 +0200 nn r271212 : #i101319# handle merged cells and row groups when loading cached data for external refs --- sc/source/filter/xml/xmlexternaltabi.cxx | 45 +++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'sc/source/filter/xml/xmlexternaltabi.cxx') diff --git a/sc/source/filter/xml/xmlexternaltabi.cxx b/sc/source/filter/xml/xmlexternaltabi.cxx index 4eefbbc1a917..7eabdff07b9b 100644 --- a/sc/source/filter/xml/xmlexternaltabi.cxx +++ b/sc/source/filter/xml/xmlexternaltabi.cxx @@ -114,6 +114,49 @@ void ScXMLExternalRefTabSourceContext::EndElement() // ============================================================================ +ScXMLExternalRefRowsContext::ScXMLExternalRefRowsContext( + ScXMLImport& rImport, USHORT nPrefix, const OUString& rLName, + const Reference& /* xAttrList */, ScXMLExternalTabData& rRefInfo ) : + SvXMLImportContext( rImport, nPrefix, rLName ), + mrScImport(rImport), + mrExternalRefInfo(rRefInfo) +{ +} + +ScXMLExternalRefRowsContext::~ScXMLExternalRefRowsContext() +{ +} + +SvXMLImportContext* ScXMLExternalRefRowsContext::CreateChildContext( + USHORT nPrefix, const OUString& rLocalName, const Reference& xAttrList ) +{ + // #i101319# row elements inside group, rows or header-rows + // are treated like row elements directly in the table element + + const SvXMLTokenMap& rTokenMap = mrScImport.GetTableRowsElemTokenMap(); + sal_uInt16 nToken = rTokenMap.Get(nPrefix, rLocalName); + switch (nToken) + { + case XML_TOK_TABLE_ROWS_ROW_GROUP: + case XML_TOK_TABLE_ROWS_HEADER_ROWS: + case XML_TOK_TABLE_ROWS_ROWS: + return new ScXMLExternalRefRowsContext( + mrScImport, nPrefix, rLocalName, xAttrList, mrExternalRefInfo); + case XML_TOK_TABLE_ROWS_ROW: + return new ScXMLExternalRefRowContext( + mrScImport, nPrefix, rLocalName, xAttrList, mrExternalRefInfo); + default: + ; + } + return new SvXMLImportContext(GetImport(), nPrefix, rLocalName); +} + +void ScXMLExternalRefRowsContext::EndElement() +{ +} + +// ============================================================================ + ScXMLExternalRefRowContext::ScXMLExternalRefRowContext( ScXMLImport& rImport, USHORT nPrefix, const OUString& rLName, const Reference& xAttrList, ScXMLExternalTabData& rRefInfo ) : @@ -153,7 +196,7 @@ SvXMLImportContext* ScXMLExternalRefRowContext::CreateChildContext( { const SvXMLTokenMap& rTokenMap = mrScImport.GetTableRowElemTokenMap(); sal_uInt16 nToken = rTokenMap.Get(nPrefix, rLocalName); - if (nToken == XML_TOK_TABLE_ROW_CELL) + if (nToken == XML_TOK_TABLE_ROW_CELL || nToken == XML_TOK_TABLE_ROW_COVERED_CELL) return new ScXMLExternalRefCellContext(mrScImport, nPrefix, rLocalName, xAttrList, mrExternalRefInfo); return new SvXMLImportContext(GetImport(), nPrefix, rLocalName); -- cgit