diff --git a/include/svx/hdft.hxx b/include/svx/hdft.hxx index d14e70d12fa5..218131370287 100644 --- a/include/svx/hdft.hxx +++ b/include/svx/hdft.hxx @@ -69,6 +69,7 @@ protected: std::unique_ptr m_xTurnOnBox; std::unique_ptr m_xCntSharedBox; std::unique_ptr m_xCntSharedFirstBox; + std::unique_ptr m_xCntNoFirstBox; std::unique_ptr m_xLMLbl; std::unique_ptrm_xLMEdit; std::unique_ptr m_xRMLbl; @@ -86,6 +87,7 @@ protected: void InitHandler(); void TurnOn(const weld::Toggleable* pButton); DECL_LINK(TurnOnHdl, weld::Toggleable&, void); + DECL_LINK(FirstPageHdl, weld::Toggleable&, void); DECL_DLLPRIVATE_LINK(BackgroundHdl, weld::Button&, void); DECL_DLLPRIVATE_LINK(ValueChangeHdl, weld::MetricSpinButton&, void); void RangeHdl(); diff --git a/include/svx/svxids.hrc b/include/svx/svxids.hrc index 846a0d959217..1db3d1a434a5 100644 --- a/include/svx/svxids.hrc +++ b/include/svx/svxids.hrc @@ -1126,8 +1126,10 @@ class XFillGradientItem; #define SID_RESET_AUTOFORMATS ( SID_SVX_START + 1258 ) +#define SID_ATTR_PAGE_NO_FIRST ( SID_SVX_START + 1259 ) + // IMPORTANT NOTE: adjust SID_SVX_FIRSTFREE, when adding new slot id -#define SID_SVX_FIRSTFREE ( SID_SVX_START + 1258 + 1 ) +#define SID_SVX_FIRSTFREE ( SID_SVX_START + 1259 + 1 ) // Overflow check for slot IDs #if SID_SVX_FIRSTFREE > SID_SVX_END diff --git a/include/xmloff/XMLTextMasterPageContext.hxx b/include/xmloff/XMLTextMasterPageContext.hxx index a2b6cfd42b6f..4addbb5ea340 100644 --- a/include/xmloff/XMLTextMasterPageContext.hxx +++ b/include/xmloff/XMLTextMasterPageContext.hxx @@ -36,6 +36,8 @@ class XMLOFF_DLLPUBLIC XMLTextMasterPageContext : public SvXMLStyleContext OUString m_sFollow; OUString m_sPageMasterName; OUString m_sDrawingPageStyle; + OUString m_sIsFirstPageFooterShared; + OUString m_sIsFirstPageHeaderShared; css::uno::Reference < css::style::XStyle > m_xStyle; @@ -47,6 +49,7 @@ class XMLOFF_DLLPUBLIC XMLTextMasterPageContext : public SvXMLStyleContext bool m_bInsertFooterFirst; bool m_bHeaderInserted; bool m_bFooterInserted; + bool m_bHeaderFirstAvailable; SAL_DLLPRIVATE css::uno::Reference< css::style::XStyle > Create(); protected: diff --git a/include/xmloff/xmltoken.hxx b/include/xmloff/xmltoken.hxx index 36c0165e1923..d666b9c58a70 100644 --- a/include/xmloff/xmltoken.hxx +++ b/include/xmloff/xmltoken.hxx @@ -922,6 +922,7 @@ namespace xmloff::token { XML_FONTWORK_STYLE, XML_FOOTER, XML_FOOTER_FIRST, + XML_IS_FIRST_PAGE_FOOTER_SHARED, XML_FOOTER_LEFT, XML_FOOTER_STYLE, XML_FOOTER_VISIBLE, @@ -1024,6 +1025,7 @@ namespace xmloff::token { XML_HATCHSTYLE_TRIPLE, XML_HEADER, XML_HEADER_FIRST, + XML_IS_FIRST_PAGE_HEADER_SHARED, XML_HEADER_LEFT, XML_HEADER_STYLE, XML_HEADERS, diff --git a/schema/libreoffice/OpenDocument-v1.4+libreoffice-schema.rng b/schema/libreoffice/OpenDocument-v1.4+libreoffice-schema.rng index 94c2f0818274..1bf49f1f78d5 100644 --- a/schema/libreoffice/OpenDocument-v1.4+libreoffice-schema.rng +++ b/schema/libreoffice/OpenDocument-v1.4+libreoffice-schema.rng @@ -4419,4 +4419,19 @@ xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1. + + + + + + + + + + + + + + + diff --git a/svx/source/dialog/hdft.cxx b/svx/source/dialog/hdft.cxx index ee2607627763..8d734f5f995c 100644 --- a/svx/source/dialog/hdft.cxx +++ b/svx/source/dialog/hdft.cxx @@ -133,6 +133,7 @@ SvxHFPage::SvxHFPage(weld::Container* pPage, weld::DialogController* pController , mbEnableDrawingLayerFillStyles(false) , m_xCntSharedBox(m_xBuilder->weld_check_button(u"checkSameLR"_ustr)) , m_xCntSharedFirstBox(m_xBuilder->weld_check_button(u"checkSameFP"_ustr)) + , m_xCntNoFirstBox(m_xBuilder->weld_check_button(u"checkNoFP"_ustr)) , m_xLMLbl(m_xBuilder->weld_label(u"labelLeftMarg"_ustr)) , m_xLMEdit(m_xBuilder->weld_metric_spin_button(u"spinMargLeft"_ustr, FieldUnit::CM)) , m_xRMLbl(m_xBuilder->weld_label(u"labelRightMarg"_ustr)) @@ -164,6 +165,7 @@ SvxHFPage::SvxHFPage(weld::Container* pPage, weld::DialogController* pController on both the Header and Footer tabs */ m_xCntSharedBox->set_help_id( u"SVX_HID_FOOTER_CHECKSAMELR"_ustr ); m_xCntSharedFirstBox->set_help_id( u"SVX_HID_FOOTER_CHECKSAMEFP"_ustr ); + m_xCntNoFirstBox->set_help_id( u"SVX_HID_FOOTER_CHECKNOFP"_ustr ); m_xLMEdit->set_help_id( u"SVX_HID_FOOTER_SPINMARGLEFT"_ustr ); m_xRMEdit->set_help_id( u"SVX_HID_FOOTER_SPINMARGRIGHT"_ustr ); m_xDistEdit->set_help_id( u"SVX_HID_FOOTER_SPINSPACING"_ustr ); @@ -175,6 +177,7 @@ SvxHFPage::SvxHFPage(weld::Container* pPage, weld::DialogController* pController // uitest m_xCntSharedBox->set_buildable_name(m_xCntSharedBox->get_buildable_name() + "-footer"); m_xCntSharedFirstBox->set_buildable_name(m_xCntSharedFirstBox->get_buildable_name() + "-footer"); + m_xCntNoFirstBox->set_buildable_name(m_xCntNoFirstBox->get_buildable_name() + "-footer"); } else //Header { @@ -186,7 +189,11 @@ SvxHFPage::SvxHFPage(weld::Container* pPage, weld::DialogController* pController // uitest m_xCntSharedBox->set_buildable_name(m_xCntSharedBox->get_buildable_name() + "-header"); m_xCntSharedFirstBox->set_buildable_name(m_xCntSharedFirstBox->get_buildable_name() + "-header"); + m_xCntNoFirstBox->set_buildable_name(m_xCntNoFirstBox->get_buildable_name() + "-header"); } + //TODO: hide only or move following controls? + if (m_bIsCalc) + m_xCntNoFirstBox->hide(); m_xTurnOnBox->show(); InitHandler(); @@ -217,6 +224,7 @@ bool SvxHFPage::FillItemSet( SfxItemSet* rSet ) const sal_uInt16 nWDynSpacing = GetWhich(SID_ATTR_HDFT_DYNAMIC_SPACING); const sal_uInt16 nWShared = GetWhich(SID_ATTR_PAGE_SHARED); const sal_uInt16 nWSharedFirst = GetWhich( SID_ATTR_PAGE_SHARED_FIRST ); + const sal_uInt16 nWNoFirst = GetWhich( SID_ATTR_PAGE_NO_FIRST ); const sal_uInt16 nWBrush = GetWhich(SID_ATTR_BRUSH); const sal_uInt16 nWBox = GetWhich(SID_ATTR_BORDER_OUTER); const sal_uInt16 nWBoxInfo = GetWhich(SID_ATTR_BORDER_INNER); @@ -236,6 +244,7 @@ bool SvxHFPage::FillItemSet( SfxItemSet* rSet ) aSet.MergeRange(nWDynamic, nWDynamic); aSet.MergeRange(nWShared, nWShared); aSet.MergeRange(nWSharedFirst, nWSharedFirst); + aSet.MergeRange(nWNoFirst, nWNoFirst); aSet.MergeRange(nWBrush, nWBrush); aSet.MergeRange(nWBoxInfo, nWBoxInfo); aSet.MergeRange(nWBox, nWBox); @@ -254,14 +263,15 @@ bool SvxHFPage::FillItemSet( SfxItemSet* rSet ) aSet.Put( SfxBoolItem( nWDynamic, m_xHeightDynBtn->get_active() ) ); aSet.Put( SfxBoolItem( nWShared, m_xCntSharedBox->get_active() ) ); if(m_xCntSharedFirstBox->get_visible()) - aSet.Put(SfxBoolItem(nWSharedFirst, m_xCntSharedFirstBox->get_active())); + aSet.Put(SfxBoolItem(nWSharedFirst, m_xCntSharedFirstBox->get_active())); + if (m_xCntNoFirstBox->get_visible()) + aSet.Put(SfxBoolItem(nWNoFirst, m_xCntNoFirstBox->get_active())); if (m_xDynSpacingCB->get_visible() && SfxItemPool::IsWhich(nWDynSpacing)) { std::unique_ptr pBoolItem(static_cast(pPool->GetUserOrPoolDefaultItem(nWDynSpacing).Clone())); pBoolItem->SetValue(m_xDynSpacingCB->get_active()); aSet.Put(std::move(pBoolItem)); } - // Size SvxSizeItem aSizeItem( static_cast(rOldSet.Get( nWSize )) ); Size aSize( aSizeItem.GetSize() ); @@ -441,6 +451,10 @@ void SvxHFPage::Reset( const SfxItemSet* rSet ) void SvxHFPage::InitHandler() { m_xTurnOnBox->connect_toggled(LINK(this, SvxHFPage, TurnOnHdl)); + + m_xCntSharedFirstBox->connect_toggled(LINK(this, SvxHFPage, FirstPageHdl)); + m_xCntNoFirstBox->connect_toggled(LINK(this, SvxHFPage, FirstPageHdl)); + m_xDistEdit->connect_value_changed(LINK(this, SvxHFPage, ValueChangeHdl)); m_xHeightEdit->connect_value_changed(LINK(this,SvxHFPage,ValueChangeHdl)); @@ -472,6 +486,8 @@ void SvxHFPage::TurnOn(const weld::Toggleable* pBox) { m_xCntSharedBox->set_sensitive(true); m_xCntSharedFirstBox->set_sensitive(true); + m_xCntNoFirstBox->set_sensitive(true); + FirstPageHdl(*m_xCntNoFirstBox); } m_xBackgroundBtn->set_sensitive(true); } @@ -512,6 +528,7 @@ void SvxHFPage::TurnOn(const weld::Toggleable* pBox) m_xCntSharedBox->set_sensitive(false); m_xBackgroundBtn->set_sensitive(false); m_xCntSharedFirstBox->set_sensitive(false); + m_xCntNoFirstBox->set_sensitive(false); } else m_xTurnOnBox->set_active(true); @@ -524,6 +541,12 @@ IMPL_LINK(SvxHFPage, TurnOnHdl, weld::Toggleable&, rBox, void) TurnOn(&rBox); } +IMPL_LINK_NOARG(SvxHFPage, FirstPageHdl, weld::Toggleable&, void) +{ + m_xCntSharedFirstBox->set_sensitive(!m_xCntNoFirstBox->get_active()); + m_xCntNoFirstBox->set_sensitive(!m_bIsCalc && !m_xCntSharedFirstBox->get_active()); +} + IMPL_LINK_NOARG(SvxHFPage, BackgroundHdl, weld::Button&, void) { if(!m_pBBSet) @@ -829,6 +852,7 @@ void SvxHFPage::ActivatePage( const SfxItemSet& rSet ) { m_xCntSharedBox->set_sensitive(true); m_xCntSharedFirstBox->set_sensitive(true); + m_xCntNoFirstBox->set_sensitive(true); } if (const SvxSizeItem* pItem = GetItem( rSet, SID_ATTR_PAGE_SIZE )) @@ -843,6 +867,9 @@ void SvxHFPage::ActivatePage( const SfxItemSet& rSet ) std::optional oNonActivatedFirstShared; // only used by Writer bool bActivatedFirstShared = true; // default value const sal_uInt16 nSidAttrPageSharedFirst = GetWhich(SID_ATTR_PAGE_SHARED_FIRST); + std::optional oNonActivatedNoFirst; // only used by Writer + bool bActivatedNoFirst = false; // default value + const sal_uInt16 nSidAttrPageNoFirst = GetWhich(SID_ATTR_PAGE_NO_FIRST); // Evaluate Header attribute const SvxSetItem* pSetItem = nullptr; @@ -879,6 +906,17 @@ void SvxHFPage::ActivatePage( const SfxItemSet& rSet ) else oNonActivatedFirstShared = pSharedFirst->GetValue(); } + const SfxBoolItem* pNoFirst = nullptr; + if (rHeaderSet.HasItem(nSidAttrPageNoFirst)) + pNoFirst + = static_cast(&rHeaderSet.Get(nSidAttrPageNoFirst)); + if (pNoFirst) + { + if (SID_ATTR_PAGE_HEADERSET == m_nId) + bActivatedNoFirst = pNoFirst->GetValue(); + else + oNonActivatedNoFirst = pNoFirst->GetValue(); + } } else pSetItem = nullptr; @@ -892,6 +930,7 @@ void SvxHFPage::ActivatePage( const SfxItemSet& rSet ) { m_xCntSharedBox->set_sensitive(false); m_xCntSharedFirstBox->set_sensitive(false); + m_xCntNoFirstBox->set_sensitive(false); } } pSetItem = nullptr; @@ -928,6 +967,17 @@ void SvxHFPage::ActivatePage( const SfxItemSet& rSet ) else oNonActivatedFirstShared = pSharedFirst->GetValue(); } + const SfxBoolItem* pNoFirst = nullptr; + if (rFooterSet.HasItem(nSidAttrPageNoFirst)) + pNoFirst + = static_cast(&rFooterSet.Get(nSidAttrPageNoFirst)); + if (pNoFirst) + { + if (SID_ATTR_PAGE_FOOTERSET == m_nId) + bActivatedNoFirst = pNoFirst->GetValue(); + else + oNonActivatedNoFirst = pNoFirst->GetValue(); + } } else pSetItem = nullptr; @@ -941,6 +991,7 @@ void SvxHFPage::ActivatePage( const SfxItemSet& rSet ) { m_xCntSharedBox->set_sensitive(false); m_xCntSharedFirstBox->set_sensitive(false); + m_xCntNoFirstBox->set_sensitive(false); } } @@ -948,6 +999,14 @@ void SvxHFPage::ActivatePage( const SfxItemSet& rSet ) m_xCntSharedFirstBox->set_active( oNonActivatedFirstShared.has_value() ? *oNonActivatedFirstShared : bActivatedFirstShared); + m_xCntNoFirstBox->set_active( + oNonActivatedNoFirst.has_value() ? *oNonActivatedNoFirst : bActivatedNoFirst); + + m_xCntSharedFirstBox->set_sensitive(m_xTurnOnBox->get_active() && + !m_xCntNoFirstBox->get_active()); + m_xCntNoFirstBox->set_sensitive(m_xTurnOnBox->get_active() && + !m_xCntSharedFirstBox->get_active()); + if (const SfxBoolItem* pBoolItem = GetItem( rSet, SID_ATTR_PAGE_EXT1 )) { m_aBspWin.SetTable( true ); diff --git a/svx/uiconfig/ui/headfootformatpage.ui b/svx/uiconfig/ui/headfootformatpage.ui index bdad1120afeb..a8a0ff5607cc 100644 --- a/svx/uiconfig/ui/headfootformatpage.ui +++ b/svx/uiconfig/ui/headfootformatpage.ui @@ -98,7 +98,7 @@ - + True False @@ -139,7 +139,23 @@ 2 - + + + No content on first page + True + True + False + True + True + True + + + 0 + 2 + 2 + + + True False @@ -151,7 +167,7 @@ 0 - 2 + 3 @@ -166,7 +182,7 @@ 1 - 2 + 3 @@ -181,7 +197,7 @@ 0 - 3 + 4 @@ -196,7 +212,7 @@ 1 - 3 + 4 @@ -211,7 +227,7 @@ 0 - 4 + 5 @@ -226,7 +242,7 @@ 1 - 4 + 5 @@ -240,7 +256,7 @@ 0 - 5 + 6 2 @@ -257,7 +273,7 @@ 0 - 6 + 7 @@ -272,7 +288,7 @@ 1 - 6 + 7 @@ -287,7 +303,7 @@ 0 - 7 + 8 2 @@ -328,7 +344,7 @@ 0 - 8 + 9 2 diff --git a/sw/inc/pagedesc.hxx b/sw/inc/pagedesc.hxx index 7df2637b6a6a..f2f9f2647847 100644 --- a/sw/inc/pagedesc.hxx +++ b/sw/inc/pagedesc.hxx @@ -126,9 +126,11 @@ enum class UseOnPage : sal_uInt16 HeaderShare = 0x0040, FooterShare = 0x0080, FirstShare = 0x0100, + WithoutFirst = 0x0200, NoHeaderShare = 0xFFBF, ///< For internal use only. NoFooterShare = 0xFF7F, ///< For internal use only. - NoFirstShare = 0xFEFF + NoFirstShare = 0xFEFF, + NotWithoutFirst= 0xFDFF }; namespace o3tl { template<> struct typed_flags : is_typed_flags {}; @@ -212,6 +214,8 @@ public: inline void ChgFooterShare( bool bNew ); bool IsFirstShared() const; void ChgFirstShare( bool bNew ); + bool IsWithoutFirst() const; + void ChgWithoutFirst( bool bNew ); bool IsHidden() const { return m_IsHidden; } void SetHidden(bool const bValue) { m_IsHidden = bValue; } diff --git a/sw/inc/unoprnms.hxx b/sw/inc/unoprnms.hxx index 93155019afd2..833e6916873f 100644 --- a/sw/inc/unoprnms.hxx +++ b/sw/inc/unoprnms.hxx @@ -887,6 +887,7 @@ inline constexpr OUString UNO_NAME_LINE_WIDTH = u"LineWidth"_ustr; inline constexpr OUString UNO_NAME_PARA_CONTEXT_MARGIN = u"ParaContextMargin"_ustr; inline constexpr OUString UNO_NAME_PARAGRAPH_STYLE_NAME = u"ParagraphStyleName"_ustr; inline constexpr OUString UNO_NAME_FIRST_IS_SHARED = u"FirstIsShared"_ustr; +inline constexpr OUString UNO_NAME_NO_FIRST = u"NoFirst"_ustr; inline constexpr OUString UNO_NAME_HEADER_TEXT_FIRST = u"HeaderTextFirst"_ustr; inline constexpr OUString UNO_NAME_FOOTER_TEXT_FIRST = u"FooterTextFirst"_ustr; inline constexpr OUString UNO_NAME_INITIALS = u"Initials"_ustr; diff --git a/sw/qa/core/header_footer/HeaderFooterTest.cxx b/sw/qa/core/header_footer/HeaderFooterTest.cxx index 16c9f3bfed0e..eedc26946294 100644 --- a/sw/qa/core/header_footer/HeaderFooterTest.cxx +++ b/sw/qa/core/header_footer/HeaderFooterTest.cxx @@ -115,11 +115,9 @@ CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testHeaderFooterWithSpecialFirstPage_OOXM { xmlDocUniquePtr pXmlDoc = parseLayoutDump(); - // check first page - assertXPath(pXmlDoc, "/root/page[1]/header"); - assertXPath(pXmlDoc, "/root/page[1]/footer"); - assertXPath(pXmlDoc, "/root/page[1]/header/txt/text()", 0); - assertXPath(pXmlDoc, "/root/page[1]/footer/txt/text()", 0); + // check first page -> no header and footer + assertXPath(pXmlDoc, "/root/page[1]/header", 0); + assertXPath(pXmlDoc, "/root/page[1]/footer", 0); // check second page in the same way assertXPath(pXmlDoc, "/root/page[2]/header"); assertXPath(pXmlDoc, "/root/page[2]/footer"); @@ -650,10 +648,7 @@ CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testFirstPageFooterEnabled) // Footer shouldn't be enabled on first page, but then on the other pages auto verify = [this]() { xmlDocUniquePtr pXmlDoc = parseLayoutDump(); - // TODO - // It's currently not possible to disable the header on first page only. - //assertXPath(pXmlDoc, "/root/page[1]/footer/txt", 0); - assertXPath(pXmlDoc, "/root/page[1]/footer/txt"); + assertXPath(pXmlDoc, "/root/page[1]/footer/txt", 0); }; createSwDoc("TestFirstFooterDisabled.docx"); verify(); diff --git a/sw/qa/writerfilter/dmapper/DomainMapper.cxx b/sw/qa/writerfilter/dmapper/DomainMapper.cxx index 28b4858e7aa3..e3d556760539 100644 --- a/sw/qa/writerfilter/dmapper/DomainMapper.cxx +++ b/sw/qa/writerfilter/dmapper/DomainMapper.cxx @@ -273,6 +273,46 @@ CPPUNIT_TEST_FIXTURE(Test, testFrameprPagebreakStyle) // i.e. the page break was lost, the document didn't have the correct page count. CPPUNIT_ASSERT_EQUAL(static_cast(2), pLastPage->GetPhyPageNum()); } + +CPPUNIT_TEST_FIXTURE(Test, emptyHeaderFirstPageRtf) +{ + // Given a document with containing + // but no + // + // + + createSwDoc("NoFirstPageHeadFooter.rtf"); + + uno::Reference xStyleFamiliesSupplier(mxComponent, + uno::UNO_QUERY); + uno::Reference xStyleFamilies + = xStyleFamiliesSupplier->getStyleFamilies(); + uno::Reference xStyleFamily( + xStyleFamilies->getByName(u"PageStyles"_ustr), uno::UNO_QUERY); + uno::Reference xPageStyle(xStyleFamily->getByName(u"Standard"_ustr), + uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(false, getProperty(xPageStyle, u"FirstIsShared"_ustr)); + CPPUNIT_ASSERT_EQUAL(true, getProperty(xPageStyle, u"NoFirst"_ustr)); } +CPPUNIT_TEST_FIXTURE(Test, emptyHeaderFirstPageDocx) +{ + // Given a document with containing + // but no + // + // + createSwDoc("NoFirstPageHeadFooter.docx"); + + uno::Reference xStyleFamiliesSupplier(mxComponent, + uno::UNO_QUERY); + uno::Reference xStyleFamilies + = xStyleFamiliesSupplier->getStyleFamilies(); + uno::Reference xStyleFamily( + xStyleFamilies->getByName(u"PageStyles"_ustr), uno::UNO_QUERY); + uno::Reference xPageStyle(xStyleFamily->getByName(u"Standard"_ustr), + uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(false, getProperty(xPageStyle, u"FirstIsShared"_ustr)); + CPPUNIT_ASSERT_EQUAL(true, getProperty(xPageStyle, u"NoFirst"_ustr)); +} +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/writerfilter/dmapper/data/NoFirstPageHeadFooter.docx b/sw/qa/writerfilter/dmapper/data/NoFirstPageHeadFooter.docx new file mode 100755 index 000000000000..0969112e6c08 Binary files /dev/null and b/sw/qa/writerfilter/dmapper/data/NoFirstPageHeadFooter.docx differ diff --git a/sw/qa/writerfilter/dmapper/data/NoFirstPageHeadFooter.rtf b/sw/qa/writerfilter/dmapper/data/NoFirstPageHeadFooter.rtf new file mode 100755 index 000000000000..432d5ccd205f --- /dev/null +++ b/sw/qa/writerfilter/dmapper/data/NoFirstPageHeadFooter.rtf @@ -0,0 +1,146 @@ +{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch46\stshfhich46\stshfbi31507\deflang1031\deflangfe1041\themelang1031\themelangfe1041\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f35\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0400000000000000}Yu Gothic{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e};} +{\f46\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Liberation Sans;}{\f48\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0400000000000000}@Yu Gothic;} +{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbmajor\f31501\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0300000000000000}Yu Gothic Light{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e Light};} +{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2 Aptos Display;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\fdbminor\f31505\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0400000000000000}Yu Gothic{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e};}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2 Aptos;} +{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f49\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f50\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\f52\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f53\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f54\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f55\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\f56\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f57\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f59\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f60\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;} +{\f62\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f63\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f66\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f67\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);} +{\f71\fbidi \fswiss\fcharset0\fprq2 Yu Gothic Western{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e};}{\f69\fbidi \fswiss\fcharset238\fprq2 Yu Gothic CE{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e};} +{\f70\fbidi \fswiss\fcharset204\fprq2 Yu Gothic Cyr{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e};}{\f72\fbidi \fswiss\fcharset161\fprq2 Yu Gothic Greek{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e};} +{\f73\fbidi \fswiss\fcharset162\fprq2 Yu Gothic Tur{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e};}{\f76\fbidi \fswiss\fcharset186\fprq2 Yu Gothic Baltic{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e};} +{\f79\fbidi \fswiss\fcharset238\fprq2 Liberation Sans CE;}{\f80\fbidi \fswiss\fcharset204\fprq2 Liberation Sans Cyr;}{\f82\fbidi \fswiss\fcharset161\fprq2 Liberation Sans Greek;}{\f83\fbidi \fswiss\fcharset162\fprq2 Liberation Sans Tur;} +{\f84\fbidi \fswiss\fcharset177\fprq2 Liberation Sans (Hebrew);}{\f86\fbidi \fswiss\fcharset186\fprq2 Liberation Sans Baltic;}{\f87\fbidi \fswiss\fcharset163\fprq2 Liberation Sans (Vietnamese);}{\f91\fbidi \fswiss\fcharset0\fprq2 @Yu Gothic Western;} +{\f89\fbidi \fswiss\fcharset238\fprq2 @Yu Gothic CE;}{\f90\fbidi \fswiss\fcharset204\fprq2 @Yu Gothic Cyr;}{\f92\fbidi \fswiss\fcharset161\fprq2 @Yu Gothic Greek;}{\f93\fbidi \fswiss\fcharset162\fprq2 @Yu Gothic Tur;} +{\f96\fbidi \fswiss\fcharset186\fprq2 @Yu Gothic Baltic;}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fdbmajor\f31520\fbidi \fswiss\fcharset0\fprq2 Yu Gothic Light Western{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e Light};}{\fdbmajor\f31518\fbidi \fswiss\fcharset238\fprq2 Yu Gothic Light CE{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e Light};} +{\fdbmajor\f31519\fbidi \fswiss\fcharset204\fprq2 Yu Gothic Light Cyr{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e Light};} +{\fdbmajor\f31521\fbidi \fswiss\fcharset161\fprq2 Yu Gothic Light Greek{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e Light};} +{\fdbmajor\f31522\fbidi \fswiss\fcharset162\fprq2 Yu Gothic Light Tur{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e Light};} +{\fdbmajor\f31525\fbidi \fswiss\fcharset186\fprq2 Yu Gothic Light Baltic{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e Light};}{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Aptos Display CE;} +{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Aptos Display Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Aptos Display Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Aptos Display Tur;} +{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Aptos Display Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Aptos Display (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fdbminor\f31560\fbidi \fswiss\fcharset0\fprq2 Yu Gothic Western{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e};}{\fdbminor\f31558\fbidi \fswiss\fcharset238\fprq2 Yu Gothic CE{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e};} +{\fdbminor\f31559\fbidi \fswiss\fcharset204\fprq2 Yu Gothic Cyr{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e};}{\fdbminor\f31561\fbidi \fswiss\fcharset161\fprq2 Yu Gothic Greek{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e};} +{\fdbminor\f31562\fbidi \fswiss\fcharset162\fprq2 Yu Gothic Tur{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e};}{\fdbminor\f31565\fbidi \fswiss\fcharset186\fprq2 Yu Gothic Baltic{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e};} +{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Aptos CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Aptos Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Aptos Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Aptos Tur;} +{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Aptos Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Aptos (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0; +\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0; +\caccentone\ctint255\cshade191\red15\green71\blue97;\ctextone\ctint166\cshade255\red89\green89\blue89;\ctextone\ctint216\cshade255\red39\green39\blue39;\ctextone\ctint191\cshade255\red64\green64\blue64;}{\*\defchp +\fs24\kerning2\loch\af46\hich\af46\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa160\sl278\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl278\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \fs24\lang1031\langfe1041\kerning2\loch\f46\hich\af46\dbch\af31505\cgrid\langnp1031\langfenp1041 \snext0 \sqformat \spriority0 +Normal;}{\s1\ql \li0\ri0\sb360\sa80\sl278\slmult1\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs40\alang1025 \ltrch\fcs0 +\fs40\cf19\lang1031\langfe1041\kerning2\loch\f31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1041 \sbasedon0 \snext0 \slink15 \sqformat \spriority9 \styrsid2981384 heading 1;}{\s2\ql \li0\ri0\sb160\sa80\sl278\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs32\alang1025 \ltrch\fcs0 +\fs32\cf19\lang1031\langfe1041\kerning2\loch\f31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1041 \sbasedon0 \snext0 \slink16 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid2981384 heading 2;}{\s3\ql \li0\ri0\sb160\sa80\sl278\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs28\alang1025 \ltrch\fcs0 +\fs28\cf19\lang1031\langfe1041\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1031\langfenp1041 \sbasedon0 \snext0 \slink17 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid2981384 heading 3;}{\s4\ql \li0\ri0\sb80\sa40\sl278\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af31503\afs24\alang1025 \ltrch\fcs0 +\i\fs24\cf19\lang1031\langfe1041\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1031\langfenp1041 \sbasedon0 \snext0 \slink18 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid2981384 heading 4;}{\s5\ql \li0\ri0\sb80\sa40\sl278\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel4\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs24\alang1025 \ltrch\fcs0 +\fs24\cf19\lang1031\langfe1041\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1031\langfenp1041 \sbasedon0 \snext0 \slink19 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid2981384 heading 5;}{\s6\ql \li0\ri0\sb40\sl278\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel5\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af31503\afs24\alang1025 \ltrch\fcs0 +\i\fs24\cf20\lang1031\langfe1041\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1031\langfenp1041 \sbasedon0 \snext0 \slink20 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid2981384 heading 6;}{\s7\ql \li0\ri0\sb40\sl278\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel6\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs24\alang1025 \ltrch\fcs0 +\fs24\cf20\lang1031\langfe1041\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1031\langfenp1041 \sbasedon0 \snext0 \slink21 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid2981384 heading 7;}{\s8\ql \li0\ri0\sl278\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel7\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af31503\afs24\alang1025 \ltrch\fcs0 +\i\fs24\cf21\lang1031\langfe1041\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1031\langfenp1041 \sbasedon0 \snext0 \slink22 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid2981384 heading 8;}{\s9\ql \li0\ri0\sl278\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel8\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs24\alang1025 \ltrch\fcs0 +\fs24\cf21\lang1031\langfe1041\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1031\langfenp1041 \sbasedon0 \snext0 \slink23 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid2981384 heading 9;}{\*\cs10 \additive +\ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl278\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \fs24\lang1031\langfe1041\kerning2\loch\f46\hich\af46\dbch\af31505\cgrid\langnp1031\langfenp1041 \snext11 \ssemihidden \sunhideused +Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \af31503\afs40 \ltrch\fcs0 \fs40\cf19\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink1 \spriority9 \styrsid2981384 \'dcberschrift 1 Zchn;}{\*\cs16 \additive \rtlch\fcs1 \af31503\afs32 \ltrch\fcs0 +\fs32\cf19\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink2 \ssemihidden \spriority9 \styrsid2981384 \'dcberschrift 2 Zchn;}{\*\cs17 \additive \rtlch\fcs1 \af31503\afs28 \ltrch\fcs0 \fs28\cf19\loch\f31506\hich\af31506\dbch\af31501 +\sbasedon10 \slink3 \ssemihidden \spriority9 \styrsid2981384 \'dcberschrift 3 Zchn;}{\*\cs18 \additive \rtlch\fcs1 \ai\af31503 \ltrch\fcs0 \i\cf19\loch\f31506\hich\af31506\dbch\af31501 \sbasedon10 \slink4 \ssemihidden \spriority9 \styrsid2981384 +\'dcberschrift 4 Zchn;}{\*\cs19 \additive \rtlch\fcs1 \af31503 \ltrch\fcs0 \cf19\loch\f31506\hich\af31506\dbch\af31501 \sbasedon10 \slink5 \ssemihidden \spriority9 \styrsid2981384 \'dcberschrift 5 Zchn;}{\*\cs20 \additive \rtlch\fcs1 \ai\af31503 +\ltrch\fcs0 \i\cf20\loch\f31506\hich\af31506\dbch\af31501 \sbasedon10 \slink6 \ssemihidden \spriority9 \styrsid2981384 \'dcberschrift 6 Zchn;}{\*\cs21 \additive \rtlch\fcs1 \af31503 \ltrch\fcs0 \cf20\loch\f31506\hich\af31506\dbch\af31501 +\sbasedon10 \slink7 \ssemihidden \spriority9 \styrsid2981384 \'dcberschrift 7 Zchn;}{\*\cs22 \additive \rtlch\fcs1 \ai\af31503 \ltrch\fcs0 \i\cf21\loch\f31506\hich\af31506\dbch\af31501 \sbasedon10 \slink8 \ssemihidden \spriority9 \styrsid2981384 +\'dcberschrift 8 Zchn;}{\*\cs23 \additive \rtlch\fcs1 \af31503 \ltrch\fcs0 \cf21\loch\f31506\hich\af31506\dbch\af31501 \sbasedon10 \slink9 \ssemihidden \spriority9 \styrsid2981384 \'dcberschrift 9 Zchn;}{ +\s24\ql \li0\ri0\sa80\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\contextualspace \rtlch\fcs1 \af31503\afs56\alang1025 \ltrch\fcs0 +\fs56\expnd-2\expndtw-10\lang1031\langfe1041\kerning28\loch\f31502\hich\af31502\dbch\af31501\cgrid\langnp1031\langfenp1041 \sbasedon0 \snext0 \slink25 \sqformat \spriority10 \styrsid2981384 Title;}{\*\cs25 \additive \rtlch\fcs1 \af31503\afs56 \ltrch\fcs0 +\fs56\expnd-2\expndtw-10\kerning28\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink24 \spriority10 \styrsid2981384 Titel Zchn;}{\s26\ql \li0\ri0\sa160\sl278\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ilvl1\adjustright\rin0\lin0\itap0 +\rtlch\fcs1 \af31503\afs28\alang1025 \ltrch\fcs0 \fs28\expnd3\expndtw15\cf20\lang1031\langfe1041\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1031\langfenp1041 \sbasedon0 \snext0 \slink27 \sqformat \spriority11 \styrsid2981384 Subtitle;}{\* +\cs27 \additive \rtlch\fcs1 \af31503\afs28 \ltrch\fcs0 \fs28\expnd3\expndtw15\cf20\loch\f31506\hich\af31506\dbch\af31501 \sbasedon10 \slink26 \spriority11 \styrsid2981384 Untertitel Zchn;}{\s28\qc \li0\ri0\sb160\sa160\sl278\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af31507\afs24\alang1025 \ltrch\fcs0 \i\fs24\cf22\lang1031\langfe1041\kerning2\loch\f46\hich\af46\dbch\af31505\cgrid\langnp1031\langfenp1041 +\sbasedon0 \snext0 \slink29 \sqformat \spriority29 \styrsid2981384 Quote;}{\*\cs29 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\cf22 \sbasedon10 \slink28 \spriority29 \styrsid2981384 Zitat Zchn;}{\s30\ql \li720\ri0\sa160\sl278\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\contextualspace \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \fs24\lang1031\langfe1041\kerning2\loch\f46\hich\af46\dbch\af31505\cgrid\langnp1031\langfenp1041 +\sbasedon0 \snext30 \sqformat \spriority34 \styrsid2981384 List Paragraph;}{\*\cs31 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\cf19 \sbasedon10 \sqformat \spriority21 \styrsid2981384 Intense Emphasis;}{\s32\qc \li864\ri864\sb360\sa360\sl278\slmult1 +\widctlpar\brdrt\brdrs\brdrw10\brsp200\brdrcf19 \brdrb\brdrs\brdrw10\brsp200\brdrcf19 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin864\lin864\itap0 \rtlch\fcs1 \ai\af31507\afs24\alang1025 \ltrch\fcs0 +\i\fs24\cf19\lang1031\langfe1041\kerning2\loch\f46\hich\af46\dbch\af31505\cgrid\langnp1031\langfenp1041 \sbasedon0 \snext0 \slink33 \sqformat \spriority30 \styrsid2981384 Intense Quote;}{\*\cs33 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\cf19 +\sbasedon10 \slink32 \spriority30 \styrsid2981384 Intensives Zitat Zchn;}{\*\cs34 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\scaps\expnd1\expndtw5\cf19 \sbasedon10 \sqformat \spriority32 \styrsid2981384 Intense Reference;}{\s35\ql \li0\ri0\widctlpar +\tqc\tx4513\tqr\tx9026\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \fs24\lang1031\langfe1041\kerning2\loch\f46\hich\af46\dbch\af31505\cgrid\langnp1031\langfenp1041 +\sbasedon0 \snext35 \slink36 \sunhideused \styrsid2981384 header;}{\*\cs36 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 \slink35 \styrsid2981384 Kopfzeile Zchn;}{\s37\ql \li0\ri0\widctlpar +\tqc\tx4513\tqr\tx9026\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \fs24\lang1031\langfe1041\kerning2\loch\f46\hich\af46\dbch\af31505\cgrid\langnp1031\langfenp1041 +\sbasedon0 \snext37 \slink38 \sunhideused \styrsid2981384 footer;}{\*\cs38 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 \slink37 \styrsid2981384 Fu\'dfzeile Zchn;}}{\*\rsidtbl \rsid534836\rsid748818\rsid1056961\rsid2321316\rsid2981384\rsid5734155 +\rsid5767624\rsid6838659\rsid8217171\rsid8653403\rsid15952640}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Oliver Specht}{\operator Oliver Specht} +{\creatim\yr2026\mo5\dy29\hr9\min16}{\revtim\yr2026\mo5\dy29\hr9\min16}{\version2}{\edmins0}{\nofpages2}{\nofwords9}{\nofchars59}{\*\company CIB Group}{\nofcharsws67}{\vern15}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} +\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1134\gutter0\ltrsect +\deftab708\widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0 +\showxmlerrors1\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1417\dgvorigin1417\dghshow1\dgvshow1 +\jexpand\viewkind1\viewscale110\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct +\asianbrkrule\rsidroot2981384\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0 +{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0{\*\ftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2981384 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 +\fs24\lang1031\langfe1041\kerning2\loch\af46\hich\af46\dbch\af31505\cgrid\langnp1031\langfenp1041 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid6838659 \chftnsep +\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2981384 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 +\fs24\lang1031\langfe1041\kerning2\loch\af46\hich\af46\dbch\af31505\cgrid\langnp1031\langfenp1041 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid6838659 \chftnsepc +\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2981384 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 +\fs24\lang1031\langfe1041\kerning2\loch\af46\hich\af46\dbch\af31505\cgrid\langnp1031\langfenp1041 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid6838659 \chftnsep +\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2981384 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 +\fs24\lang1031\langfe1041\kerning2\loch\af46\hich\af46\dbch\af31505\cgrid\langnp1031\langfenp1041 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid6838659 \chftnsepc +\par }}\ltrpar \sectd \ltrsect\linex0\headery708\footery708\colsx708\endnhere\titlepg\sectlinegrid360\sectdefaultcl\sectrsid2981384\sftnbj {\headerr \ltrpar \pard\plain \ltrpar\s35\ql \li0\ri0\widctlpar +\tqc\tx4513\tqr\tx9026\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \fs24\lang1031\langfe1041\kerning2\loch\af46\hich\af46\dbch\af31505\cgrid\langnp1031\langfenp1041 {\rtlch\fcs1 \af31507 +\ltrch\fcs0 \insrsid2981384 \hich\af46\dbch\af31505\loch\f46 Follow page header +\par }}{\footerr \ltrpar \pard\plain \ltrpar\s37\ql \fi708\li0\ri0\widctlpar\tqc\tx4513\tqr\tx9026\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2981384 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 +\fs24\lang1031\langfe1041\kerning2\loch\af46\hich\af46\dbch\af31505\cgrid\langnp1031\langfenp1041 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid2981384 \hich\af46\dbch\af31505\loch\f46 Follow page footer +\par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}} +{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8 +\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa160\sl278\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \fs24\lang1031\langfe1041\kerning2\loch\af46\hich\af46\dbch\af31505\cgrid\langnp1031\langfenp1041 {\rtlch\fcs1 \af31507 \ltrch\fcs0 +\lang1033\langfe1041\langnp1033\insrsid2981384\charrsid2981384 \hich\af46\dbch\af31505\loch\f46 Header/footer only not on f}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1041\langnp1033\insrsid2981384 \hich\af46\dbch\af31505\loch\f46 irst page}{ +\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1041\langnp1033\insrsid534836 +\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1041\langnp1033\insrsid2981384 +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1041\langnp1033\insrsid2981384\charrsid2981384 +\par } +} diff --git a/sw/source/core/doc/docdesc.cxx b/sw/source/core/doc/docdesc.cxx index 4d54bd7720e1..b934d2af9ef4 100644 --- a/sw/source/core/doc/docdesc.cxx +++ b/sw/source/core/doc/docdesc.cxx @@ -260,13 +260,20 @@ void SwDoc::CopyMasterHeader(const SwPageDesc &rChged, const SwFormatHeader &rHe // If it already has one and it points to the same Section as the // Right one, it needs to get an own Header. // The content is evidently copied. + const SwFormatHeader &rFormatHead = rDescFrameFormat.GetHeader(); - if ( !rFormatHead.IsActive() ) + if (bFirst && rChged.IsWithoutFirst()) + { + if (rFormatHead.IsActive()) + { + SwFormatHeader* pHead = new SwFormatHeader(false); + rDescFrameFormat.SetFormatAttr( *pHead ); + } + } + else if ( !rFormatHead.IsActive() ) { SwFormatHeader aHead( getIDocumentLayoutAccess().MakeLayoutFormat( RndStdIds::HEADERL, nullptr ) ); rDescFrameFormat.SetFormatAttr( aHead ); - // take over additional attributes (margins, borders ...) - ::lcl_DescSetAttr( *rHead.GetHeaderFormat(), *aHead.GetHeaderFormat(), false); } else { @@ -339,7 +346,15 @@ void SwDoc::CopyMasterFooter(const SwPageDesc &rChged, const SwFormatFooter &rFo // it needs to get an own one. // The content is evidently copied. const SwFormatFooter &rFormatFoot = rDescFrameFormat.GetFooter(); - if ( !rFormatFoot.IsActive() ) + if (bFirst && rChged.IsWithoutFirst()) + { + if (rFormatFoot.IsActive()) + { + SwFormatFooter* pFoot = new SwFormatFooter(false); + rDescFrameFormat.SetFormatAttr( *pFoot ); + } + } + else if ( !rFormatFoot.IsActive() ) { SwFormatFooter aFoot( getIDocumentLayoutAccess().MakeLayoutFormat( RndStdIds::FOOTER, nullptr ) ); rDescFrameFormat.SetFormatAttr( aFoot ); @@ -421,7 +436,7 @@ void SwDoc::ChgPageDesc( size_t i, const SwPageDesc &rChged ) const SwFormatFooter& rFirstMasterFoot = rChged.GetFirstMaster().GetFooter(); const SwFormatFooter& rFirstLeftFoot = rChged.GetFirstLeft().GetFooter(); const bool bStashLeftFoot = !rDesc.IsFooterShared() && rChged.IsFooterShared(); - const bool bStashFirstMasterFoot = !rDesc.IsFirstShared() && rChged.IsFirstShared(); + const bool bStashFirstMasterFoot = (!rDesc.IsFirstShared() && rChged.IsFirstShared()) || (!rDesc.IsWithoutFirst() && rChged.IsWithoutFirst()); const bool bStashFirstLeftFoot = (!rDesc.IsFooterShared() && rChged.IsFooterShared()) || (!rDesc.IsFirstShared() && rChged.IsFirstShared()); if (bStashLeftFoot && rLeftFoot.GetRegisteredIn() && !rDesc.HasStashedFormat(false, true, false)) rDesc.StashFrameFormat(rChged.GetLeft(), false, true, false); @@ -605,6 +620,7 @@ void SwDoc::ChgPageDesc( size_t i, const SwPageDesc &rChged ) rDesc.ChgFooterShare( rChged.IsFooterShared() ); // there is just one first shared flag for both header and footer? rDesc.ChgFirstShare( rChged.IsFirstShared() ); + rDesc.ChgWithoutFirst( rChged.IsWithoutFirst() ); if ( rDesc.GetName() != rChged.GetName() ) rDesc.SetName( rChged.GetName() ); diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx index fab18eadd015..bd763ce43dae 100644 --- a/sw/source/core/doc/docfmt.cxx +++ b/sw/source/core/doc/docfmt.cxx @@ -1515,7 +1515,7 @@ void SwDoc::CopyPageDesc( const SwPageDesc& rSrcDesc, SwPageDesc& rDstDesc, CopyHeader( rSrcDesc.GetLeft(), rDstDesc.GetLeft() ); else rDstDesc.GetLeft().SetFormatAttr( rDstDesc.GetMaster().GetHeader() ); - if( !rDstDesc.IsFirstShared() ) + if( !rDstDesc.IsFirstShared() && !rDstDesc.IsWithoutFirst() ) { CopyHeader( rSrcDesc.GetFirstMaster(), rDstDesc.GetFirstMaster() ); rDstDesc.GetFirstLeft().SetFormatAttr(rDstDesc.GetFirstMaster().GetHeader()); @@ -1530,7 +1530,7 @@ void SwDoc::CopyPageDesc( const SwPageDesc& rSrcDesc, SwPageDesc& rDstDesc, CopyFooter( rSrcDesc.GetLeft(), rDstDesc.GetLeft() ); else rDstDesc.GetLeft().SetFormatAttr( rDstDesc.GetMaster().GetFooter() ); - if( !rDstDesc.IsFirstShared() ) + if( !rDstDesc.IsFirstShared() && !rDstDesc.IsWithoutFirst() ) { CopyFooter( rSrcDesc.GetFirstMaster(), rDstDesc.GetFirstMaster() ); rDstDesc.GetFirstLeft().SetFormatAttr(rDstDesc.GetFirstMaster().GetFooter()); diff --git a/sw/source/core/layout/pagedesc.cxx b/sw/source/core/layout/pagedesc.cxx index 394a3d2096c1..0fad5122b2b4 100644 --- a/sw/source/core/layout/pagedesc.cxx +++ b/sw/source/core/layout/pagedesc.cxx @@ -424,6 +424,19 @@ void SwPageDesc::ChgFirstShare( bool bNew ) m_eUse &= UseOnPage::NoFirstShare; } +bool SwPageDesc::IsWithoutFirst() const +{ + return bool(m_eUse & UseOnPage::WithoutFirst); +} + +void SwPageDesc::ChgWithoutFirst( bool bNew ) +{ + if ( bNew ) + m_eUse |= UseOnPage::WithoutFirst; + else + m_eUse &= UseOnPage::NotWithoutFirst; +} + bool SwPageDesc::SetFormatAttrOnAll(const SfxItemSet& rSet, const bool bHeader) { if( !rSet.Count() ) diff --git a/sw/source/core/undo/SwUndoPageDesc.cxx b/sw/source/core/undo/SwUndoPageDesc.cxx index a4d0cbdbc626..a801776a40be 100644 --- a/sw/source/core/undo/SwUndoPageDesc.cxx +++ b/sw/source/core/undo/SwUndoPageDesc.cxx @@ -73,6 +73,11 @@ SwUndoPageDesc::SwUndoPageDesc(const SwPageDesc & _aOld, m_bExchange = false; if( ( rOldHead.IsActive() || rOldFoot.IsActive() ) && ( rOldDesc.IsFirstShared() != rNewDesc.IsFirstShared() ) ) m_bExchange = false; + if( ( rOldHead.IsActive() || rOldFoot.IsActive() ) && ( rOldDesc.IsWithoutFirst() != rNewDesc.IsWithoutFirst() ) ) + m_bExchange = false; + if (!rNewDesc.IsFirstShared() && rOldDesc.IsWithoutFirst() == rNewDesc.IsWithoutFirst()) + m_bExchange = false; + if( !m_bExchange ) return; @@ -166,12 +171,15 @@ void SwUndoPageDesc::ExchangeContentNodes( SwPageDesc& rSource, SwPageDesc &rDes if (!rDest.IsFirstShared()) { // Same procedure for unshared header... - const SwFormatHeader& rSourceFirstMasterHead = rSource.GetFirstMaster().GetHeader(); - pItem = rDest.GetFirstMaster().GetAttrSet().GetItemIfSet( RES_HEADER, false ); + const SwFrameFormat & rSourceMasterHead = + rSource.IsWithoutFirst() ? rSource.GetMaster() : + rSource.GetFirstMaster(); + const SwFormatHeader& rSourceFirstMasterHead = rSourceMasterHead.GetHeader(); + pItem = rSourceMasterHead.GetAttrSet().GetItemIfSet( RES_HEADER, false ); pNewItem.reset(pItem->Clone()); pNewFormat = pNewItem->GetHeaderFormat(); pNewFormat->SetFormatAttr( rSourceFirstMasterHead.GetHeaderFormat()->GetContent() ); - pItem = rSource.GetFirstMaster().GetAttrSet().GetItemIfSet( RES_HEADER, false ); + pItem = rSourceMasterHead.GetAttrSet().GetItemIfSet( RES_HEADER, false ); pNewItem.reset(pItem->Clone()); pNewFormat = pNewItem->GetHeaderFormat(); pNewFormat->SetFormatAttr( SwFormatContent() ); @@ -209,12 +217,16 @@ void SwUndoPageDesc::ExchangeContentNodes( SwPageDesc& rSource, SwPageDesc &rDes if (rDest.IsFirstShared()) return; - const SwFormatFooter& rSourceFirstMasterFoot = rSource.GetFirstMaster().GetFooter(); - pItem = rDest.GetFirstMaster().GetAttrSet().GetItemIfSet( RES_FOOTER, false ); + const SwFrameFormat & rSourceMasterFoot = + rSource.IsWithoutFirst() ? rSource.GetMaster() : + rSource.GetFirstMaster(); + + const SwFormatFooter& rSourceFirstMasterFoot = rSourceMasterFoot.GetFooter(); + pItem = rSourceMasterFoot.GetAttrSet().GetItemIfSet( RES_FOOTER, false ); pNewItem.reset(pItem->Clone()); pNewFormat = pNewItem->GetFooterFormat(); pNewFormat->SetFormatAttr( rSourceFirstMasterFoot.GetFooterFormat()->GetContent() ); - pItem = rSource.GetFirstMaster().GetAttrSet().GetItemIfSet( RES_FOOTER, false ); + pItem = rSourceMasterFoot.GetAttrSet().GetItemIfSet( RES_FOOTER, false ); pNewItem.reset(pItem->Clone()); pNewFormat = pNewItem->GetFooterFormat(); pNewFormat->SetFormatAttr( SwFormatContent() ); diff --git a/sw/source/core/unocore/unomap1.cxx b/sw/source/core/unocore/unomap1.cxx index 06abc7695375..f361990d28e5 100644 --- a/sw/source/core/unocore/unomap1.cxx +++ b/sw/source/core/unocore/unomap1.cxx @@ -514,6 +514,7 @@ std::span SwUnoPropertyMapProvider::GetPageStyleP { UNO_NAME_FIRST_IS_SHARED, SID_ATTR_PAGE_SHARED_FIRST, cppu::UnoType::get(), PROPERTY_NONE, 0 }, + { UNO_NAME_NO_FIRST, SID_ATTR_PAGE_NO_FIRST, cppu::UnoType::get(), PROPERTY_NONE, 0 }, //UUU use real WhichIDs for Footer, see Header (above) for more infos { UNO_NAME_FOOTER_BACK_COLOR, RES_BACKGROUND, cppu::UnoType::get(), PROPERTY_NONE ,MID_BACK_COLOR }, diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx index b7e331fbe2e2..97cbbca28ec2 100644 --- a/sw/source/core/unocore/unostyle.cxx +++ b/sw/source/core/unocore/unostyle.cxx @@ -853,7 +853,7 @@ static bool lcl_GetHeaderFooterItem( bFooter ? SID_ATTR_PAGE_FOOTERSET : SID_ATTR_PAGE_HEADERSET, false); if (!o_rpItem && - rPropName == UNO_NAME_FIRST_IS_SHARED) + (rPropName == UNO_NAME_FIRST_IS_SHARED || rPropName == UNO_NAME_NO_FIRST)) { // fdo#79269 header may not exist, check footer then o_rpItem = rSet.GetItemIfSet( (!bFooter) ? SID_ATTR_PAGE_FOOTERSET : SID_ATTR_PAGE_HEADERSET, @@ -2604,7 +2604,8 @@ static const SfxItemSet* lcl_GetItemsetForProperty(const SfxItemSet& rSet, SfxSt if(eFamily != SfxStyleFamily::Page) return &rSet; const bool isFooter = o3tl::starts_with(rPropertyName, u"Footer"); - if(!isFooter && !o3tl::starts_with(rPropertyName, u"Header") && rPropertyName != UNO_NAME_FIRST_IS_SHARED) + if(!isFooter && !o3tl::starts_with(rPropertyName, u"Header") && + rPropertyName != UNO_NAME_FIRST_IS_SHARED && rPropertyName != UNO_NAME_NO_FIRST) return &rSet; const SvxSetItem* pSetItem; if(!lcl_GetHeaderFooterItem(rSet, rPropertyName, isFooter, pSetItem)) @@ -3011,7 +3012,9 @@ void SwXPageStyle::SetPropertyValues_Impl(const uno::Sequence& rProper const bool bHeader(rPropName.startsWith("Header")); const bool bFooter(rPropName.startsWith("Footer")); const bool bFirstIsShared(rPropName == UNO_NAME_FIRST_IS_SHARED); - if(bHeader || bFooter || bFirstIsShared) + const bool bNoFirst(rPropName == UNO_NAME_NO_FIRST); + + if(bHeader || bFooter || bFirstIsShared || bNoFirst) { switch(pEntry->nWID) { @@ -3024,6 +3027,7 @@ void SwXPageStyle::SetPropertyValues_Impl(const uno::Sequence& rProper case SID_ATTR_PAGE_DYNAMIC: case SID_ATTR_PAGE_SHARED: case SID_ATTR_PAGE_SHARED_FIRST: + case SID_ATTR_PAGE_NO_FIRST: case SID_ATTR_PAGE_SIZE: case RES_HEADER_FOOTER_EAT_SPACING: { @@ -3033,7 +3037,7 @@ void SwXPageStyle::SetPropertyValues_Impl(const uno::Sequence& rProper { PutItemToSet(pSetItem, *pPropSet, *pEntry, rValues[nProp], aBaseImpl); - if (pEntry->nWID == SID_ATTR_PAGE_SHARED_FIRST) + if (pEntry->nWID == SID_ATTR_PAGE_SHARED_FIRST || pEntry->nWID == SID_ATTR_PAGE_NO_FIRST) { // Need to add this to the other as well pSetItem = aBaseImpl.GetItemSet().GetItemIfSet( @@ -3057,7 +3061,8 @@ void SwXPageStyle::SetPropertyValues_Impl(const uno::Sequence& rProper SID_ATTR_BORDER_INNER,SID_ATTR_BORDER_INNER, // [10023 SID_ATTR_PAGE_SIZE,SID_ATTR_PAGE_SIZE, // [10051 SID_ATTR_PAGE_ON,SID_ATTR_PAGE_SHARED, // [10060 - SID_ATTR_PAGE_SHARED_FIRST,SID_ATTR_PAGE_SHARED_FIRST> + SID_ATTR_PAGE_SHARED_FIRST,SID_ATTR_PAGE_SHARED_FIRST, + SID_ATTR_PAGE_NO_FIRST,SID_ATTR_PAGE_NO_FIRST> (*aBaseImpl.GetItemSet().GetPool())); // set correct parent to get the XFILL_NONE FillStyle as needed @@ -3070,6 +3075,7 @@ void SwXPageStyle::SetPropertyValues_Impl(const uno::Sequence& rProper aTempSet.Put(SvxULSpaceItem(RES_UL_SPACE)); aTempSet.Put(SfxBoolItem(SID_ATTR_PAGE_SHARED, true)); aTempSet.Put(SfxBoolItem(SID_ATTR_PAGE_SHARED_FIRST, true)); + aTempSet.Put(SfxBoolItem(SID_ATTR_PAGE_NO_FIRST, false)); aTempSet.Put(SfxBoolItem(SID_ATTR_PAGE_DYNAMIC, true)); SvxSetItem aNewSetItem(bFooter ? SID_ATTR_PAGE_FOOTERSET : SID_ATTR_PAGE_HEADERSET, aTempSet); @@ -3128,6 +3134,9 @@ void SwXPageStyle::SetPropertyValues_Impl(const uno::Sequence& rProper } } continue; + //case SID_ATTR_PAGE_NO_FIRST: + // aBaseImpl.GetItemSet().Put(SfxBoolItem(SID_ATTR_PAGE_NO_FIRST, rValues[nProp].get())); + // break; default: ; } } @@ -3136,6 +3145,7 @@ void SwXPageStyle::SetPropertyValues_Impl(const uno::Sequence& rProper case SID_ATTR_PAGE_DYNAMIC: case SID_ATTR_PAGE_SHARED: case SID_ATTR_PAGE_SHARED_FIRST: + case SID_ATTR_PAGE_NO_FIRST: case SID_ATTR_PAGE_ON: case RES_HEADER_FOOTER_EAT_SPACING: // these slots are exclusive to Header/Footer, thus this is an error @@ -3256,7 +3266,8 @@ uno::Sequence SwXPageStyle::GetPropertyValues_Impl(const uno::Sequence const bool bHeader(rPropName.startsWith("Header")); const bool bFooter(rPropName.startsWith("Footer")); const bool bFirstIsShared(rPropName == UNO_NAME_FIRST_IS_SHARED); - if(bHeader || bFooter || bFirstIsShared) + const bool bNoFirst(rPropName == UNO_NAME_NO_FIRST); + if(bHeader || bFooter || bFirstIsShared || bNoFirst) { switch(pEntry->nWID) { @@ -3269,6 +3280,7 @@ uno::Sequence SwXPageStyle::GetPropertyValues_Impl(const uno::Sequence case SID_ATTR_PAGE_DYNAMIC: case SID_ATTR_PAGE_SHARED: case SID_ATTR_PAGE_SHARED_FIRST: + case SID_ATTR_PAGE_NO_FIRST: case SID_ATTR_PAGE_SIZE: case RES_HEADER_FOOTER_EAT_SPACING: { @@ -3341,6 +3353,7 @@ uno::Sequence SwXPageStyle::GetPropertyValues_Impl(const uno::Sequence case SID_ATTR_PAGE_DYNAMIC: case SID_ATTR_PAGE_SHARED: case SID_ATTR_PAGE_SHARED_FIRST: + case SID_ATTR_PAGE_NO_FIRST: case SID_ATTR_PAGE_ON: case RES_HEADER_FOOTER_EAT_SPACING: throw beans::UnknownPropertyException( "Unknown property: " + rPropName, getXWeak() ); diff --git a/sw/source/uibase/docvw/HeaderFooterWin.cxx b/sw/source/uibase/docvw/HeaderFooterWin.cxx index 9507cdbbf8ad..d766f23f725b 100644 --- a/sw/source/uibase/docvw/HeaderFooterWin.cxx +++ b/sw/source/uibase/docvw/HeaderFooterWin.cxx @@ -281,6 +281,7 @@ void SwHeaderFooterWin::SetOffset(Point aOffset) // Compute the text to show const SwPageFrame* pPageFrame = SwFrameMenuButtonBase::GetPageFrame(m_pFrame); const SwPageDesc* pDesc = pPageFrame->GetPageDesc(); + //TODO: handle on/off state first vs. follow pages bool bIsFirst = !pDesc->IsFirstShared() && pPageFrame->OnFirstPage(); bool bIsLeft = !pDesc->IsHeaderShared() && !pPageFrame->OnRightPage(); bool bIsRight = !pDesc->IsHeaderShared() && pPageFrame->OnRightPage(); diff --git a/sw/source/uibase/utlui/uitool.cxx b/sw/source/uibase/utlui/uitool.cxx index ef8249e826f2..9d6349d2ed79 100644 --- a/sw/source/uibase/utlui/uitool.cxx +++ b/sw/source/uibase/utlui/uitool.cxx @@ -387,6 +387,8 @@ void ItemSetToPageDesc(const SfxItemSet& rSet, SwPageDesc& rPageDesc, bool bAppl rPageDesc.ChgHeaderShare(rHeaderSet.Get(SID_ATTR_PAGE_SHARED).GetValue()); rPageDesc.ChgFirstShare(static_cast( rHeaderSet.Get(SID_ATTR_PAGE_SHARED_FIRST)).GetValue()); + rPageDesc.ChgWithoutFirst(static_cast( + rHeaderSet.Get(SID_ATTR_PAGE_NO_FIRST)).GetValue()); bFirstShare = true; } else @@ -422,6 +424,8 @@ void ItemSetToPageDesc(const SfxItemSet& rSet, SwPageDesc& rPageDesc, bool bAppl { rPageDesc.ChgFirstShare(static_cast( rFooterSet.Get(SID_ATTR_PAGE_SHARED_FIRST)).GetValue()); + rPageDesc.ChgWithoutFirst(static_cast( + rFooterSet.Get(SID_ATTR_PAGE_NO_FIRST)).GetValue()); } } else @@ -562,7 +566,8 @@ void PageDescToItemSet( const SwPageDesc& rPageDesc, SfxItemSet& rSet) SID_ATTR_BORDER_INNER,SID_ATTR_BORDER_INNER, // [10023 SID_ATTR_PAGE_SIZE,SID_ATTR_PAGE_SIZE, // [10051 SID_ATTR_PAGE_ON,SID_ATTR_PAGE_SHARED, // [10060 - SID_ATTR_PAGE_SHARED_FIRST,SID_ATTR_PAGE_SHARED_FIRST>(*rSet.GetPool())); + SID_ATTR_PAGE_SHARED_FIRST,SID_ATTR_PAGE_SHARED_FIRST, + SID_ATTR_PAGE_NO_FIRST,SID_ATTR_PAGE_NO_FIRST>(*rSet.GetPool())); // set correct parent to get the XFILL_NONE FillStyle as needed aHeaderSet.SetParent(&rMaster.GetDoc().GetDfltFrameFormat()->GetAttrSet()); @@ -581,6 +586,8 @@ void PageDescToItemSet( const SwPageDesc& rPageDesc, SfxItemSet& rSet) aHeaderSet.Put(aShared); SfxBoolItem aFirstShared(SID_ATTR_PAGE_SHARED_FIRST, rPageDesc.IsFirstShared()); aHeaderSet.Put(aFirstShared); + SfxBoolItem aWithoutFirst(SID_ATTR_PAGE_NO_FIRST, rPageDesc.IsWithoutFirst()); + aHeaderSet.Put(aWithoutFirst); // Size SvxSizeItem aSize(SID_ATTR_PAGE_SIZE, rFrameSize.GetSize()); @@ -611,7 +618,8 @@ void PageDescToItemSet( const SwPageDesc& rPageDesc, SfxItemSet& rSet) SID_ATTR_BORDER_INNER,SID_ATTR_BORDER_INNER, // [10023 SID_ATTR_PAGE_SIZE,SID_ATTR_PAGE_SIZE, // [10051 SID_ATTR_PAGE_ON,SID_ATTR_PAGE_SHARED, // [10060 - SID_ATTR_PAGE_SHARED_FIRST,SID_ATTR_PAGE_SHARED_FIRST>(*rSet.GetPool())); + SID_ATTR_PAGE_SHARED_FIRST,SID_ATTR_PAGE_SHARED_FIRST, + SID_ATTR_PAGE_NO_FIRST,SID_ATTR_PAGE_NO_FIRST>(*rSet.GetPool())); // set correct parent to get the XFILL_NONE FillStyle as needed aFooterSet.SetParent(&rMaster.GetDoc().GetDfltFrameFormat()->GetAttrSet()); @@ -630,6 +638,8 @@ void PageDescToItemSet( const SwPageDesc& rPageDesc, SfxItemSet& rSet) aFooterSet.Put(aShared); SfxBoolItem aFirstShared(SID_ATTR_PAGE_SHARED_FIRST, rPageDesc.IsFirstShared()); aFooterSet.Put(aFirstShared); + SfxBoolItem aWithoutFirst(SID_ATTR_PAGE_NO_FIRST, rPageDesc.IsWithoutFirst()); + aFooterSet.Put(aWithoutFirst); // Size SvxSizeItem aSize(SID_ATTR_PAGE_SIZE, rFrameSize.GetSize()); diff --git a/sw/source/uibase/wrtsh/wrtsh1.cxx b/sw/source/uibase/wrtsh/wrtsh1.cxx index d6bb437084c0..010c67244225 100644 --- a/sw/source/uibase/wrtsh/wrtsh1.cxx +++ b/sw/source/uibase/wrtsh/wrtsh1.cxx @@ -2327,10 +2327,17 @@ void SwWrtShell::ChangeHeaderOrFooter( { bChgd = true; SwFrameFormat &rMaster = aDesc.GetMaster(); - if(bHeader) - rMaster.SetFormatAttr( SwFormatHeader( bOn )); + if (bOn && aDesc.IsWithoutFirst()) + { + aDesc.ChgWithoutFirst(false); + } else - rMaster.SetFormatAttr( SwFormatFooter( bOn )); + { + if (bHeader) + rMaster.SetFormatAttr( SwFormatHeader( bOn )); + else + rMaster.SetFormatAttr( SwFormatFooter( bOn )); + } if( bOn ) { // keep in sync with FN_PGNUMBER_WIZARD diff --git a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx index 3e52891ab71c..2a67b19dd887 100644 --- a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx +++ b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx @@ -4147,7 +4147,10 @@ void DomainMapper_Impl::PushPageHeaderFooter(PagePartType ePagePartType, PageTyp pSectionContext->m_bHadFirstHeader = true; } else + { pSectionContext->m_bFirstFooter = true; + pSectionContext->m_bHadFirstFooter = true; + } prepareHeaderFooterContent(xPageStyle, ePagePartType, ePropTextFirst, true); } diff --git a/sw/source/writerfilter/dmapper/PropertyIds.cxx b/sw/source/writerfilter/dmapper/PropertyIds.cxx index 6deab30c727e..9042c4f1be5b 100644 --- a/sw/source/writerfilter/dmapper/PropertyIds.cxx +++ b/sw/source/writerfilter/dmapper/PropertyIds.cxx @@ -20,6 +20,7 @@ #include #include "PropertyIds.hxx" #include +#include namespace writerfilter::dmapper{ @@ -204,6 +205,7 @@ const OUString & getPropertyName( PropertyIds eId ) { PROP_HEADER_IS_SHARED, u"HeaderIsShared"_ustr}, { PROP_HEADER_IS_ON, u"HeaderIsOn"_ustr}, { PROP_FIRST_IS_SHARED, u"FirstIsShared"_ustr}, + { PROP_FIRST_EMPTY, UNO_NAME_NO_FIRST}, { PROP_FOOTER_TEXT_LEFT, u"FooterTextLeft"_ustr}, { PROP_FOOTER_TEXT_FIRST, u"FooterTextFirst"_ustr}, { PROP_FOOTER_TEXT, u"FooterText"_ustr}, diff --git a/sw/source/writerfilter/dmapper/PropertyIds.hxx b/sw/source/writerfilter/dmapper/PropertyIds.hxx index d1e4042a868b..fa2ebfa13790 100644 --- a/sw/source/writerfilter/dmapper/PropertyIds.hxx +++ b/sw/source/writerfilter/dmapper/PropertyIds.hxx @@ -166,6 +166,7 @@ enum PropertyIds ,PROP_FIRST_LINE_OFFSET ,PROP_FIRST_PAGE ,PROP_FIRST_IS_SHARED + ,PROP_FIRST_EMPTY ,PROP_FOOTER_BODY_DISTANCE ,PROP_FOOTER_DYNAMIC_SPACING ,PROP_FOOTER_HEIGHT diff --git a/sw/source/writerfilter/dmapper/PropertyMap.cxx b/sw/source/writerfilter/dmapper/PropertyMap.cxx index e9245d9ee4d5..ce13d2d6cbf8 100644 --- a/sw/source/writerfilter/dmapper/PropertyMap.cxx +++ b/sw/source/writerfilter/dmapper/PropertyMap.cxx @@ -545,6 +545,7 @@ void SectionPropertyMap::setHeaderFooterProperties(DomainMapper_Impl& rDM_Impl) const OUString& sHeaderIsShared = getPropertyName(PROP_HEADER_IS_SHARED); const OUString& sFooterIsShared = getPropertyName(PROP_FOOTER_IS_SHARED); const OUString& sFirstIsShared = getPropertyName(PROP_FIRST_IS_SHARED); + const OUString& sFirstEmpty = getPropertyName(PROP_FIRST_EMPTY); m_aPageStyle->getPropertyValue(sHeaderIsOn) >>= bHasHeader; m_aPageStyle->getPropertyValue(sFooterIsOn) >>= bHasFooter; @@ -598,6 +599,11 @@ void SectionPropertyMap::setHeaderFooterProperties(DomainMapper_Impl& rDM_Impl) { m_aPageStyle->setPropertyValue(sHeaderIsOn, uno::Any(false)); } + else if (m_bTitlePage && !m_bHadFirstHeader && !m_bHadFirstFooter) + { + m_aPageStyle->setPropertyValue(sFirstIsShared, uno::Any(false)); + m_aPageStyle->setPropertyValue(sFirstEmpty, uno::Any(true)); + } } void SectionPropertyMap::SetBorder( BorderPosition ePos, sal_Int32 nLineDistance, const table::BorderLine2& rBorderLine, bool bShadow ) @@ -1074,7 +1080,10 @@ void copyHeaderFooter(const DomainMapper_Impl& rDM_Impl, if (bCopyLeftHeader && bEvenAndOdd) copyHeaderFooterTextProperty(xPreviousStyle, xStyle, PROP_HEADER_TEXT_LEFT); if (bCopyFirstHeader && bTitlePage) + { + xStyle->setPropertyValue(getPropertyName(PROP_FIRST_EMPTY), uno::Any(false)); copyHeaderFooterTextProperty(xPreviousStyle, xStyle, PROP_HEADER_TEXT_FIRST); + } } if (bPreviousHasFooter && bCopyFooter) @@ -1084,7 +1093,10 @@ void copyHeaderFooter(const DomainMapper_Impl& rDM_Impl, if (bCopyLeftFooter && bEvenAndOdd) copyHeaderFooterTextProperty(xPreviousStyle, xStyle, PROP_FOOTER_TEXT_LEFT); if (bCopyFirstFooter && bTitlePage) + { + xStyle->setPropertyValue(getPropertyName(PROP_FIRST_EMPTY), uno::Any(false)); copyHeaderFooterTextProperty(xPreviousStyle, xStyle, PROP_FOOTER_TEXT_FIRST); + } } } diff --git a/sw/source/writerfilter/dmapper/PropertyMap.hxx b/sw/source/writerfilter/dmapper/PropertyMap.hxx index 23d1475e334d..10d6c9a539b1 100644 --- a/sw/source/writerfilter/dmapper/PropertyMap.hxx +++ b/sw/source/writerfilter/dmapper/PropertyMap.hxx @@ -447,6 +447,7 @@ public: bool m_bRightHeader = false; bool m_bRightFooter = false; bool m_bHadFirstHeader = false; + bool m_bHadFirstFooter = false; bool m_bHadLeftHeader = false; bool m_bHadRightHeader = false; diff --git a/xmloff/source/core/xmltoken.cxx b/xmloff/source/core/xmltoken.cxx index 5ebf326bfac0..1b678b62abea 100644 --- a/xmloff/source/core/xmltoken.cxx +++ b/xmloff/source/core/xmltoken.cxx @@ -934,6 +934,7 @@ namespace xmloff::token { TOKEN( "fontwork-style", XML_FONTWORK_STYLE ), TOKEN( "footer", XML_FOOTER ), TOKEN( "footer-first", XML_FOOTER_FIRST ), + TOKEN( "is-first-page-footer-shared", XML_IS_FIRST_PAGE_FOOTER_SHARED ), TOKEN( "footer-left", XML_FOOTER_LEFT ), TOKEN( "footer-style", XML_FOOTER_STYLE ), TOKEN( "footer-visible", XML_FOOTER_VISIBLE ), @@ -1036,6 +1037,7 @@ namespace xmloff::token { TOKEN( "triple", XML_HATCHSTYLE_TRIPLE ), TOKEN( "header", XML_HEADER ), TOKEN( "header-first", XML_HEADER_FIRST ), + TOKEN( "is-first-page-header-shared", XML_IS_FIRST_PAGE_HEADER_SHARED ), TOKEN( "header-left", XML_HEADER_LEFT ), TOKEN( "header-style", XML_HEADER_STYLE ), TOKEN( "headers", XML_HEADERS ), diff --git a/xmloff/source/style/XMLPageExport.cxx b/xmloff/source/style/XMLPageExport.cxx index 31698cbe325d..1d09fd271329 100644 --- a/xmloff/source/style/XMLPageExport.cxx +++ b/xmloff/source/style/XMLPageExport.cxx @@ -43,6 +43,8 @@ using namespace ::xmloff::token; constexpr OUString gsIsPhysical( u"IsPhysical"_ustr ); constexpr OUString gsFollowStyle( u"FollowStyle"_ustr ); +constexpr OUString gsFirstShareContent( u"FirstIsShared"_ustr ); +constexpr OUString gsNoFirst( u"NoFirst"_ustr ); namespace { @@ -174,6 +176,34 @@ bool XMLPageExport::exportStyle( } } + //attributes to define shared/hidden headers/footers in Writer + if( xPropSetInfo->hasPropertyByName( gsNoFirst ) ) + { + Any aAny; + //same flag footer/header + bool bFirstShared = false; + aAny = xPropSet->getPropertyValue( gsFirstShareContent ); + aAny >>= bFirstShared; + + bool bWithoutFirstHeader = false; + aAny = xPropSet->getPropertyValue( gsNoFirst ); + aAny >>= bWithoutFirstHeader; + //TODO: version and odf extension ticket id + if( GetExport().getSaneDefaultVersion() & SvtSaveOptions::ODFSVER_EXTENDED) + GetExport().AddAttribute(XML_NAMESPACE_LO_EXT, XML_IS_FIRST_PAGE_HEADER_SHARED, + !bFirstShared && bWithoutFirstHeader ? XML_FALSE + : XML_TRUE); + + bool bWithoutFirstFooter = false; + aAny = xPropSet->getPropertyValue( gsNoFirst ); + aAny >>= bWithoutFirstFooter; + //TODO: version and odf extension ticket id + if( GetExport().getSaneDefaultVersion() & SvtSaveOptions::ODFSVER_EXTENDED) + GetExport().AddAttribute(XML_NAMESPACE_LO_EXT, XML_IS_FIRST_PAGE_FOOTER_SHARED, + !bFirstShared && bWithoutFirstFooter ? XML_FALSE + : XML_TRUE); + } + SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_STYLE, XML_MASTER_PAGE, true, true ); diff --git a/xmloff/source/text/XMLTextMasterPageContext.cxx b/xmloff/source/text/XMLTextMasterPageContext.cxx index 1a062b33cfbd..cf4ed3b9d274 100644 --- a/xmloff/source/text/XMLTextMasterPageContext.cxx +++ b/xmloff/source/text/XMLTextMasterPageContext.cxx @@ -65,6 +65,8 @@ Reference < XStyle > XMLTextMasterPageContext::Create() } constexpr OUString gsFollowStyle( u"FollowStyle"_ustr ); +constexpr OUString gsNoFirst( u"NoFirst"_ustr ); +constexpr OUString gsFirstShareContent(u"FirstIsShared"_ustr); XMLTextMasterPageContext::XMLTextMasterPageContext( SvXMLImport& rImport, sal_Int32 /*nElement*/, @@ -79,6 +81,7 @@ XMLTextMasterPageContext::XMLTextMasterPageContext( SvXMLImport& rImport, , m_bInsertFooterFirst( false ) , m_bHeaderInserted( false ) , m_bFooterInserted( false ) +, m_bHeaderFirstAvailable( false ) { OUString sName, sDisplayName; for (auto &aIter : sax_fastparser::castToFastAttributeList( xAttrList )) @@ -98,6 +101,14 @@ XMLTextMasterPageContext::XMLTextMasterPageContext( SvXMLImport& rImport, case XML_ELEMENT(STYLE, XML_PAGE_LAYOUT_NAME): m_sPageMasterName = aValue; break; + case XML_ELEMENT(STYLE, XML_IS_FIRST_PAGE_FOOTER_SHARED): + case XML_ELEMENT(LO_EXT, XML_IS_FIRST_PAGE_FOOTER_SHARED): + m_sIsFirstPageFooterShared = aValue; + break; + case XML_ELEMENT(STYLE, XML_IS_FIRST_PAGE_HEADER_SHARED): + case XML_ELEMENT(LO_EXT, XML_IS_FIRST_PAGE_HEADER_SHARED): + m_sIsFirstPageHeaderShared = aValue; + break; case XML_ELEMENT(DRAW, XML_STYLE_NAME): m_sDrawingPageStyle = aValue; break; @@ -210,6 +221,7 @@ css::uno::Reference< css::xml::sax::XFastContextHandler > XMLTextMasterPageConte break; case XML_ELEMENT(LO_EXT, XML_HEADER_FIRST): case XML_ELEMENT(STYLE, XML_HEADER_FIRST): + m_bHeaderFirstAvailable = true; if( m_bInsertHeaderFirst && m_bHeaderInserted ) bInsert = bFirst = true; break; @@ -295,6 +307,11 @@ void XMLTextMasterPageContext::Finish( bool bOverwrite ) { xPropSet->setPropertyValue( u"Hidden"_ustr, uno::Any( IsHidden( ) ) ); } + if (xPropSetInfo->hasPropertyByName( gsNoFirst) && !m_bHeaderFirstAvailable && IsXMLToken(m_sIsFirstPageHeaderShared, XML_FALSE)) + { + xPropSet->setPropertyValue( gsFirstShareContent, Any(false) ); + xPropSet->setPropertyValue( gsNoFirst, Any(true) ); + } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/xmloff/source/token/tokens.txt b/xmloff/source/token/tokens.txt index 8f9a53d8632e..8b6cf575d6ed 100644 --- a/xmloff/source/token/tokens.txt +++ b/xmloff/source/token/tokens.txt @@ -839,6 +839,7 @@ fontwork-start fontwork-style footer footer-first +is-first-page-footer-shared footer-left footer-style footer-visible @@ -941,6 +942,7 @@ hatch-table triple header header-first +is-first-page-header-shared header-left header-style headers