diff options
author | Katarina Behrens <Katarina.Behrens@cib.de> | 2017-02-12 21:56:18 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2017-02-23 19:24:28 +0000 |
commit | e28fd26d69553733778a86c84cd74e284a079e15 (patch) | |
tree | c19de4586a7a1fcf8ea5976ed33c9a271cb9aef5 | |
parent | 86efcdb9279a72408063653f1e99855bf0ca00c4 (diff) |
tdf#99908: Ensure non-empty unique gradient names
for user-defined (!preset) gradients. ODF doesn't cope with nameless
gradients so well ...
Change-Id: I7a4ca32ccf58b22fc55ceeac8778029cd6d5cea3
Reviewed-on: https://gerrit.libreoffice.org/34001
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
(cherry picked from commit 529162307e9d6191fe43d50597504474b2c1a5ba)
Reviewed-on: https://gerrit.libreoffice.org/34335
Reviewed-by: Michael Stahl <mstahl@redhat.com>
-rw-r--r-- | sd/source/ui/sidebar/SlideBackground.cxx | 4 | ||||
-rw-r--r-- | sd/source/ui/view/drviews7.cxx | 17 |
2 files changed, 17 insertions, 4 deletions
diff --git a/sd/source/ui/sidebar/SlideBackground.cxx b/sd/source/ui/sidebar/SlideBackground.cxx index 07e43ed8eab3..854929f764ca 100644 --- a/sd/source/ui/sidebar/SlideBackground.cxx +++ b/sd/source/ui/sidebar/SlideBackground.cxx @@ -816,7 +816,9 @@ IMPL_LINK_NOARG(SlideBackground, FillColorHdl, SvxColorListBox&, void) aGradient.SetStartColor(mpFillLB->GetSelectEntryColor()); aGradient.SetEndColor(mpFillGrad->GetSelectEntryColor()); - XFillGradientItem aItem(aGradient); + // the name doesn't really matter, it'll be converted to unique one eventually, + // but it has to be non-empty + XFillGradientItem aItem("gradient", aGradient); GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_PAGE_GRADIENT, SfxCallMode::RECORD, { &aItem }); } break; diff --git a/sd/source/ui/view/drviews7.cxx b/sd/source/ui/view/drviews7.cxx index f8570a42f411..6539152a49fe 100644 --- a/sd/source/ui/view/drviews7.cxx +++ b/sd/source/ui/view/drviews7.cxx @@ -1675,8 +1675,8 @@ void DrawViewShell::GetPageProperties( SfxItemSet &rSet ) case (drawing::FillStyle_GRADIENT): { - const XGradient& xGradient = static_cast<const XFillGradientItem*>( rPageAttr.GetItem( XATTR_FILLGRADIENT ) )->GetGradientValue(); - XFillGradientItem aFillGradientItem( OUString(), xGradient, SID_ATTR_PAGE_GRADIENT ); + const XFillGradientItem *pGradient = static_cast<const XFillGradientItem*>( rPageAttr.GetItem( XATTR_FILLGRADIENT ) ); + XFillGradientItem aFillGradientItem( pGradient->GetName(), pGradient->GetGradientValue(), SID_ATTR_PAGE_GRADIENT ); rSet.Put( aFillGradientItem ); } break; @@ -1716,6 +1716,9 @@ void DrawViewShell::SetPageProperties (SfxRequest& rReq) if ( ( nSlotId >= SID_ATTR_PAGE_COLOR ) && ( nSlotId <= SID_ATTR_PAGE_FILLSTYLE ) ) { SdrPageProperties& rPageProperties = pPage->getSdrPageProperties(); + const SfxItemSet &aPageItemSet = rPageProperties.GetItemSet(); + SfxItemSet *pTempSet = aPageItemSet.Clone(false, &mpDrawView->GetModel()->GetItemPool()); + rPageProperties.ClearItem(XATTR_FILLSTYLE); rPageProperties.ClearItem(XATTR_FILLGRADIENT); rPageProperties.ClearItem(XATTR_FILLHATCH); @@ -1744,8 +1747,14 @@ void DrawViewShell::SetPageProperties (SfxRequest& rReq) case(SID_ATTR_PAGE_GRADIENT): { XFillGradientItem aGradientItem( static_cast<const XFillGradientItem&>(pArgs->Get( XATTR_FILLGRADIENT )) ); + + // MigrateItemSet guarantees unique gradient names + SfxItemSet aMigrateSet( mpDrawView->GetModel()->GetItemPool(), XATTR_FILLGRADIENT, XATTR_FILLGRADIENT ); + aMigrateSet.Put( aGradientItem ); + SdrModel::MigrateItemSet( &aMigrateSet, pTempSet, mpDrawView->GetModel() ); + + rPageProperties.PutItemSet( *pTempSet ); rPageProperties.PutItem( XFillStyleItem( drawing::FillStyle_GRADIENT ) ); - rPageProperties.PutItem( XFillGradientItem( aGradientItem ) ); } break; @@ -1769,6 +1778,8 @@ void DrawViewShell::SetPageProperties (SfxRequest& rReq) break; } + delete pTempSet; + rReq.Done(); } } |