tdf#112574 sw: don't insert RES_ANCHOR into style item sets
Styles don't have anchors, only frames have anchors.
When using "New Style from Selection", clear the RES_ANCHOR from
the style item set.
Also, don't insert it in SwFramePage::DeactivatePage().
This was always broken and reportedly crashes since commit
e07feb9457f2ffb373ae69b73dda290140e4005f
Change-Id: I9320dbbcae980dfa0b00459b8cd808553d1a04f4
(cherry picked from commit 17fe1e19e01f8b23bcd23cc7c1789e8f7064d06e)
Reviewed-on: https://gerrit.libreoffice.org/42820
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/sw/source/ui/frmdlg/frmpage.cxx b/sw/source/ui/frmdlg/frmpage.cxx
index 3a85eff..2de3bbd 100644
--- a/sw/source/ui/frmdlg/frmpage.cxx
+++ b/sw/source/ui/frmdlg/frmpage.cxx
@@ -1750,13 +1750,16 @@ DeactivateRC SwFramePage::DeactivatePage(SfxItemSet * _pSet)
{
FillItemSet( _pSet );
//FillItemSet doesn't set the anchor into the set when it matches
//the original. But for the other pages we need the current anchor.
SwWrtShell* pSh = m_bFormat ? ::GetActiveWrtShell()
: getFrameDlgParentShell();
RndStdIds eAnchorId = GetAnchor();
SwFormatAnchor aAnc( eAnchorId, pSh->GetPhyPageNum() );
_pSet->Put( aAnc );
if (!m_bFormat) // tdf#112574 no anchor in styles
{
//FillItemSet doesn't set the anchor into the set when it matches
//the original. But for the other pages we need the current anchor.
SwWrtShell* pSh = m_bFormat ? ::GetActiveWrtShell()
: getFrameDlgParentShell();
RndStdIds eAnchorId = GetAnchor();
SwFormatAnchor aAnc( eAnchorId, pSh->GetPhyPageNum() );
_pSet->Put( aAnc );
}
}
return DeactivateRC::LeavePage;
diff --git a/sw/source/uibase/app/docst.cxx b/sw/source/uibase/app/docst.cxx
index 147212a..ffb866c 100644
--- a/sw/source/uibase/app/docst.cxx
+++ b/sw/source/uibase/app/docst.cxx
@@ -1226,6 +1226,7 @@ SfxStyleFamily SwDocShell::MakeByExample( const OUString &rName, SfxStyleFamily
SfxItemSet aSet(GetPool(), aFrameFormatSetRange );
pCurrWrtShell->GetFlyFrameAttr( aSet );
aSet.ClearItem(RES_ANCHOR); // tdf#112574 no anchor in styles
SwFrameFormat* pFFormat = pCurrWrtShell->GetSelectedFrameFormat();
pFrame->SetDerivedFrom( pFFormat );