sd/source/ui/sidebar/SlideBackground.cxx | 4 +++- sd/source/ui/view/drviews7.cxx | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-)
New commits: commit 529162307e9d6191fe43d50597504474b2c1a5ba Author: Katarina Behrens <katarina.behr...@cib.de> Date: Sun Feb 12 21:56:18 2017 +0100 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 <c...@libreoffice.org> Reviewed-by: Katarina Behrens <katarina.behr...@cib.de> diff --git a/sd/source/ui/sidebar/SlideBackground.cxx b/sd/source/ui/sidebar/SlideBackground.cxx index d80eab5..3d51dfb 100644 --- a/sd/source/ui/sidebar/SlideBackground.cxx +++ b/sd/source/ui/sidebar/SlideBackground.cxx @@ -817,7 +817,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 908c96c..0e540b7 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(); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits