diff options
Diffstat (limited to 'writerperfect/source/writer')
-rw-r--r-- | writerperfect/source/writer/exp/txtparai.cxx | 6 | ||||
-rw-r--r-- | writerperfect/source/writer/exp/txtparai.hxx | 5 | ||||
-rw-r--r-- | writerperfect/source/writer/exp/xmltbli.cxx | 6 | ||||
-rw-r--r-- | writerperfect/source/writer/exp/xmltbli.hxx | 5 | ||||
-rw-r--r-- | writerperfect/source/writer/exp/xmltext.cxx | 9 | ||||
-rw-r--r-- | writerperfect/source/writer/exp/xmltext.hxx | 3 |
6 files changed, 23 insertions, 11 deletions
diff --git a/writerperfect/source/writer/exp/txtparai.cxx b/writerperfect/source/writer/exp/txtparai.cxx index 7ab5171fad01..65f521c6a20f 100644 --- a/writerperfect/source/writer/exp/txtparai.cxx +++ b/writerperfect/source/writer/exp/txtparai.cxx @@ -503,8 +503,9 @@ void XMLHyperlinkContext::characters(const OUString& rChars) GetImport().GetGenerator().closeSpan(); } -XMLParaContext::XMLParaContext(XMLImport& rImport) +XMLParaContext::XMLParaContext(XMLImport& rImport, bool bTopLevel) : XMLImportContext(rImport) + , m_bTopLevel(bTopLevel) { } @@ -535,7 +536,8 @@ void XMLParaContext::startElement( GetImport().GetParagraphStyles(), aPropertyList); FillStyles(m_aStyleName, GetImport().GetAutomaticTextStyles(), GetImport().GetTextStyles(), m_aTextPropertyList); - GetImport().HandlePageSpan(aPropertyList); + if (m_bTopLevel) + GetImport().HandlePageSpan(aPropertyList); } else { diff --git a/writerperfect/source/writer/exp/txtparai.hxx b/writerperfect/source/writer/exp/txtparai.hxx index b87a5762b7a3..561be4f0a115 100644 --- a/writerperfect/source/writer/exp/txtparai.hxx +++ b/writerperfect/source/writer/exp/txtparai.hxx @@ -24,7 +24,7 @@ namespace exp class XMLParaContext : public XMLImportContext { public: - XMLParaContext(XMLImport& rImport); + XMLParaContext(XMLImport& rImport, bool bTopLevel = false); rtl::Reference<XMLImportContext> CreateChildContext( const OUString& rName, @@ -40,6 +40,9 @@ private: OUString m_aStyleName; /// List of properties spans should inherit from this paragraph. librevenge::RVNGPropertyList m_aTextPropertyList; + /// If the context is a direct child of XMLBodyContentContext. + /// Only direct child of XMLBodyContentContext has to handle page span. + bool m_bTopLevel; }; /// Shared child context factory for paragraph and span contexts. diff --git a/writerperfect/source/writer/exp/xmltbli.cxx b/writerperfect/source/writer/exp/xmltbli.cxx index a54210ad147f..a96582ecc3f9 100644 --- a/writerperfect/source/writer/exp/xmltbli.cxx +++ b/writerperfect/source/writer/exp/xmltbli.cxx @@ -184,8 +184,9 @@ int XMLTableRowContext::GetColumn() const { return m_nColumn; } void XMLTableRowContext::SetColumn(int nColumn) { m_nColumn = nColumn; } -XMLTableContext::XMLTableContext(XMLImport& rImport) +XMLTableContext::XMLTableContext(XMLImport& rImport, bool bTopLevel) : XMLImportContext(rImport) + , m_bTopLevel(bTopLevel) { } @@ -224,7 +225,8 @@ void XMLTableContext::startElement( { FillStyles(rAttributeValue, GetImport().GetAutomaticTableStyles(), GetImport().GetTableStyles(), m_aPropertyList); - GetImport().HandlePageSpan(m_aPropertyList); + if (m_bTopLevel) + GetImport().HandlePageSpan(m_aPropertyList); } else { diff --git a/writerperfect/source/writer/exp/xmltbli.hxx b/writerperfect/source/writer/exp/xmltbli.hxx index 6b7d7b267cbe..dff4dda2f988 100644 --- a/writerperfect/source/writer/exp/xmltbli.hxx +++ b/writerperfect/source/writer/exp/xmltbli.hxx @@ -22,7 +22,7 @@ namespace exp class XMLTableContext : public XMLImportContext { public: - XMLTableContext(XMLImport& rImport); + XMLTableContext(XMLImport& rImport, bool bTopLevel = false); rtl::Reference<XMLImportContext> CreateChildContext(const OUString& rName, @@ -35,6 +35,9 @@ public: private: bool m_bTableOpened = false; + /// If the context is a direct child of XMLBodyContentContext. + /// Only direct child of XMLBodyContentContext has to handle page span. + bool m_bTopLevel; librevenge::RVNGPropertyList m_aPropertyList; librevenge::RVNGPropertyListVector m_aColumns; }; diff --git a/writerperfect/source/writer/exp/xmltext.cxx b/writerperfect/source/writer/exp/xmltext.cxx index 8177be04b573..d976ebdbf846 100644 --- a/writerperfect/source/writer/exp/xmltext.cxx +++ b/writerperfect/source/writer/exp/xmltext.cxx @@ -35,17 +35,18 @@ void XMLBodyContentContext::endElement(const OUString& /*rName*/) rtl::Reference<XMLImportContext> XMLBodyContentContext::CreateChildContext( const OUString& rName, const css::uno::Reference<css::xml::sax::XAttributeList>& /*xAttribs*/) { - return CreateTextChildContext(GetImport(), rName); + return CreateTextChildContext(GetImport(), rName, true); } -rtl::Reference<XMLImportContext> CreateTextChildContext(XMLImport& rImport, const OUString& rName) +rtl::Reference<XMLImportContext> CreateTextChildContext(XMLImport& rImport, const OUString& rName, + bool bTopLevel) { if (rName == "text:p" || rName == "text:h") - return new XMLParaContext(rImport); + return new XMLParaContext(rImport, bTopLevel); if (rName == "text:section") return new XMLSectionContext(rImport); if (rName == "table:table") - return new XMLTableContext(rImport); + return new XMLTableContext(rImport, bTopLevel); if (rName == "text:list") return new XMLTextListContext(rImport); return nullptr; diff --git a/writerperfect/source/writer/exp/xmltext.hxx b/writerperfect/source/writer/exp/xmltext.hxx index b635176ce4ce..756a7ddbcb64 100644 --- a/writerperfect/source/writer/exp/xmltext.hxx +++ b/writerperfect/source/writer/exp/xmltext.hxx @@ -29,7 +29,8 @@ public: }; /// Context factory for body text, section, table cell, etc. -rtl::Reference<XMLImportContext> CreateTextChildContext(XMLImport& rImport, const OUString& rName); +rtl::Reference<XMLImportContext> CreateTextChildContext(XMLImport& rImport, const OUString& rName, + bool bTopLevel = false); } // namespace exp } // namespace writerperfect |