Support of page styles without header/footer on first page
Import/export to/from docx/rtf supported. Unit test available. Change-Id: I12065ba4fb050d7dfc013eda704ebe2acb53c88e Signed-off-by: Oliver Specht <oliver.specht@cib.de> Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/3580 Tested-by: Michael Stahl <michael.stahl@collabora.com> Reviewed-by: Michael Stahl <michael.stahl@collabora.com> (cherry picked from commit b8af8f046a098c67d7caf44dc70d1db5cabf24e2) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206698 Tested-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
This commit is contained in:
committed by
Xisco Fauli
parent
b1712dadb7
commit
5dd328effe
@@ -69,6 +69,7 @@ protected:
|
||||
std::unique_ptr<weld::CheckButton> m_xTurnOnBox;
|
||||
std::unique_ptr<weld::CheckButton> m_xCntSharedBox;
|
||||
std::unique_ptr<weld::CheckButton> m_xCntSharedFirstBox;
|
||||
std::unique_ptr<weld::CheckButton> m_xCntNoFirstBox;
|
||||
std::unique_ptr<weld::Label> m_xLMLbl;
|
||||
std::unique_ptr<weld::MetricSpinButton>m_xLMEdit;
|
||||
std::unique_ptr<weld::Label> 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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -4419,4 +4419,19 @@ xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.
|
||||
<rng:ref name="office-change-info"/>
|
||||
</rng:element>
|
||||
</rng:define>
|
||||
<!-- TODO: no proposal for loext:is-first-page-header-shared and loext:is-first-page-footer-shared -->
|
||||
<!-- enables empty header/footer on first page -->
|
||||
<rng:define name="style-master-page-attlist" combine="interleave">
|
||||
<rng:optional>
|
||||
<rng:attribute name="loext:is-first-page-header-shared">
|
||||
<!-- default value: false -->
|
||||
<rng:ref name="boolean"/>
|
||||
</rng:attribute>
|
||||
</rng:optional>
|
||||
<rng:optional>
|
||||
<rng:attribute name="loext:is-first-page-footer-shared">
|
||||
<rng:ref name="boolean"/>
|
||||
</rng:attribute>
|
||||
</rng:optional>
|
||||
</rng:define>
|
||||
</rng:grammar>
|
||||
|
||||
@@ -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<SfxBoolItem> pBoolItem(static_cast<SfxBoolItem*>(pPool->GetUserOrPoolDefaultItem(nWDynSpacing).Clone()));
|
||||
pBoolItem->SetValue(m_xDynSpacingCB->get_active());
|
||||
aSet.Put(std::move(pBoolItem));
|
||||
}
|
||||
|
||||
// Size
|
||||
SvxSizeItem aSizeItem( static_cast<const SvxSizeItem&>(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<bool> oNonActivatedFirstShared; // only used by Writer
|
||||
bool bActivatedFirstShared = true; // default value
|
||||
const sal_uInt16 nSidAttrPageSharedFirst = GetWhich(SID_ATTR_PAGE_SHARED_FIRST);
|
||||
std::optional<bool> 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<const SfxBoolItem*>(&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<const SfxBoolItem*>(&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 );
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<!-- n-columns=2 n-rows=9 -->
|
||||
<!-- n-columns=2 n-rows=10 -->
|
||||
<object class="GtkGrid" id="grid5">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
@@ -139,7 +139,23 @@
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<child>
|
||||
<object class="GtkCheckButton" id="checkNoFP">
|
||||
<property name="label" translatable="yes" context="headfootformatpage|checkNoFP">No content on first page</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="use-underline">True</property>
|
||||
<property name="draw-indicator">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">2</property>
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="labelLeftMarg">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
@@ -151,7 +167,7 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">2</property>
|
||||
<property name="top-attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -166,7 +182,7 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">2</property>
|
||||
<property name="top-attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -181,7 +197,7 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">3</property>
|
||||
<property name="top-attach">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -196,7 +212,7 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">3</property>
|
||||
<property name="top-attach">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -211,7 +227,7 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">4</property>
|
||||
<property name="top-attach">5</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -226,7 +242,7 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">4</property>
|
||||
<property name="top-attach">5</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -240,7 +256,7 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">5</property>
|
||||
<property name="top-attach">6</property>
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
@@ -257,7 +273,7 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">6</property>
|
||||
<property name="top-attach">7</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -272,7 +288,7 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">6</property>
|
||||
<property name="top-attach">7</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -287,7 +303,7 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">7</property>
|
||||
<property name="top-attach">8</property>
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
@@ -328,7 +344,7 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">8</property>
|
||||
<property name="top-attach">9</property>
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
+5
-1
@@ -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<UseOnPage> : is_typed_flags<UseOnPage, 0xffff> {};
|
||||
@@ -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; }
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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<sal_uInt16>(2), pLastPage->GetPhyPageNum());
|
||||
}
|
||||
|
||||
CPPUNIT_TEST_FIXTURE(Test, emptyHeaderFirstPageRtf)
|
||||
{
|
||||
// Given a document with <w:sectPr> containing <w:titlePg/>
|
||||
// but no
|
||||
// <w:headerReference w:type="first" r:id=".."/>
|
||||
// <w:footerReference w:type="first" r:id=".."/>
|
||||
|
||||
createSwDoc("NoFirstPageHeadFooter.rtf");
|
||||
|
||||
uno::Reference<style::XStyleFamiliesSupplier> xStyleFamiliesSupplier(mxComponent,
|
||||
uno::UNO_QUERY);
|
||||
uno::Reference<container::XNameAccess> xStyleFamilies
|
||||
= xStyleFamiliesSupplier->getStyleFamilies();
|
||||
uno::Reference<container::XNameAccess> xStyleFamily(
|
||||
xStyleFamilies->getByName(u"PageStyles"_ustr), uno::UNO_QUERY);
|
||||
uno::Reference<beans::XPropertySet> xPageStyle(xStyleFamily->getByName(u"Standard"_ustr),
|
||||
uno::UNO_QUERY);
|
||||
CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xPageStyle, u"FirstIsShared"_ustr));
|
||||
CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xPageStyle, u"NoFirst"_ustr));
|
||||
}
|
||||
|
||||
CPPUNIT_TEST_FIXTURE(Test, emptyHeaderFirstPageDocx)
|
||||
{
|
||||
// Given a document with <w:sectPr> containing <w:titlePg/>
|
||||
// but no
|
||||
// <w:headerReference w:type="first" r:id=".."/>
|
||||
// <w:footerReference w:type="first" r:id=".."/>
|
||||
createSwDoc("NoFirstPageHeadFooter.docx");
|
||||
|
||||
uno::Reference<style::XStyleFamiliesSupplier> xStyleFamiliesSupplier(mxComponent,
|
||||
uno::UNO_QUERY);
|
||||
uno::Reference<container::XNameAccess> xStyleFamilies
|
||||
= xStyleFamiliesSupplier->getStyleFamilies();
|
||||
uno::Reference<container::XNameAccess> xStyleFamily(
|
||||
xStyleFamilies->getByName(u"PageStyles"_ustr), uno::UNO_QUERY);
|
||||
uno::Reference<beans::XPropertySet> xPageStyle(xStyleFamily->getByName(u"Standard"_ustr),
|
||||
uno::UNO_QUERY);
|
||||
CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xPageStyle, u"FirstIsShared"_ustr));
|
||||
CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xPageStyle, u"NoFirst"_ustr));
|
||||
}
|
||||
}
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
|
||||
Binary file not shown.
+146
@@ -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 }
|
||||
}
|
||||
@@ -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() );
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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() )
|
||||
|
||||
@@ -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() );
|
||||
|
||||
@@ -514,6 +514,7 @@ std::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPageStyleP
|
||||
|
||||
|
||||
{ UNO_NAME_FIRST_IS_SHARED, SID_ATTR_PAGE_SHARED_FIRST, cppu::UnoType<bool>::get(), PROPERTY_NONE, 0 },
|
||||
{ UNO_NAME_NO_FIRST, SID_ATTR_PAGE_NO_FIRST, cppu::UnoType<bool>::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<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR },
|
||||
|
||||
@@ -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<OUString>& 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<OUString>& 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<OUString>& 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<OUString>& 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<OUString>& 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<OUString>& rProper
|
||||
}
|
||||
}
|
||||
continue;
|
||||
//case SID_ATTR_PAGE_NO_FIRST:
|
||||
// aBaseImpl.GetItemSet().Put(SfxBoolItem(SID_ATTR_PAGE_NO_FIRST, rValues[nProp].get<bool>()));
|
||||
// break;
|
||||
default: ;
|
||||
}
|
||||
}
|
||||
@@ -3136,6 +3145,7 @@ void SwXPageStyle::SetPropertyValues_Impl(const uno::Sequence<OUString>& 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<uno::Any> 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<uno::Any> 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<uno::Any> 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() );
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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<const SfxBoolItem&>(
|
||||
rHeaderSet.Get(SID_ATTR_PAGE_SHARED_FIRST)).GetValue());
|
||||
rPageDesc.ChgWithoutFirst(static_cast<const SfxBoolItem&>(
|
||||
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<const SfxBoolItem&>(
|
||||
rFooterSet.Get(SID_ATTR_PAGE_SHARED_FIRST)).GetValue());
|
||||
rPageDesc.ChgWithoutFirst(static_cast<const SfxBoolItem&>(
|
||||
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());
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <svl/sharedstring.hxx>
|
||||
#include "PropertyIds.hxx"
|
||||
#include <unordered_map>
|
||||
#include <unoprnms.hxx>
|
||||
|
||||
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},
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 ),
|
||||
|
||||
@@ -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 );
|
||||
|
||||
|
||||
@@ -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: */
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user