svx/source/sidebar/area/AreaPropertyPanelBase.cxx | 65 +++++++++++++++++----- 1 file changed, 51 insertions(+), 14 deletions(-)
New commits: commit 29cba5c6fd36280107115b58aae61e5ead7e4d6a Author: Samuel Mehrbrodt <[email protected]> AuthorDate: Mon Sep 19 14:10:39 2022 +0200 Commit: Samuel Mehrbrodt <[email protected]> CommitDate: Mon Sep 19 16:15:00 2022 +0200 tdf#150802 Fix setting gradient from Sidebar Regression from adc536e9efc77690df62177aa722f9252bdbf96b Change-Id: I37db76373a3b9b4a1084e830233561abc4b1e6d3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140151 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <[email protected]> diff --git a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx index 077d5ea59174..521d46ea1d3c 100644 --- a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx +++ b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx @@ -465,26 +465,63 @@ void AreaPropertyPanelBase::FillStyleChanged(bool bUpdateModel) mxMTRAngle->set_sensitive(true); mxLbFillAttr->clear(); - const SvxGradientListItem* pItem = pSh->GetItem(SID_GRADIENT_LIST); - - if (0 < pItem->GetGradientList()->Count()) + if (bUpdateModel) { - const XGradient aGradient = pItem->GetGradientList()->GetGradient(0)->GetGradient(); - const OUString aName = pItem->GetGradientList()->GetGradient(0)->GetName(); - const XFillGradientItem aXFillGradientItem(aName, aGradient); + mxLbFillAttr->hide(); + mxToolBoxColor->hide(); + mxBmpImport->hide(); - // #i122676# change FillStyle and Gradient in one call - if (bUpdateModel) + const SvxGradientListItem* pItem = pSh->GetItem(SID_GRADIENT_LIST); + if (pItem->GetGradientList()->Count() > 0) { + const XGradient aGradient + = pItem->GetGradientList()->GetGradient(0)->GetGradient(); + const OUString aName = pItem->GetGradientList()->GetGradient(0)->GetName(); + const XFillGradientItem aXFillGradientItem(aName, aGradient); + + // #i122676# change FillStyle and Gradient in one call XFillStyleItem aXFillStyleItem(drawing::FillStyle_GRADIENT); setFillStyleAndGradient(&aXFillStyleItem, aXFillGradientItem); - } - mxLbFillGradFrom->SelectEntry(aGradient.GetStartColor()); - mxLbFillGradTo->SelectEntry(aGradient.GetEndColor()); + mxLbFillGradFrom->SelectEntry(aGradient.GetStartColor()); + mxLbFillGradTo->SelectEntry(aGradient.GetEndColor()); - mxMTRAngle->set_value(toDegrees(aGradient.GetAngle()), FieldUnit::DEGREE); - css::awt::GradientStyle eXGS = aGradient.GetGradientStyle(); - mxGradientStyle->set_active(sal::static_int_cast<sal_Int32>(eXGS)); + mxMTRAngle->set_value(toDegrees(aGradient.GetAngle()), FieldUnit::DEGREE); + css::awt::GradientStyle eXGS = aGradient.GetGradientStyle(); + mxGradientStyle->set_active(sal::static_int_cast<sal_Int32>(eXGS)); + } + } + else + { + if (pSh && pSh->GetItem(SID_GRADIENT_LIST)) + { + SvxFillAttrBox::Fill(*mxLbFillAttr, + pSh->GetItem(SID_GRADIENT_LIST)->GetGradientList()); + mxLbFillGradTo->SetNoSelection(); + mxLbFillGradFrom->SetNoSelection(); + if (mpFillGradientItem) + { + const OUString aString(mpFillGradientItem->GetName()); + mxLbFillAttr->set_active_text(aString); + const XGradient aGradient = mpFillGradientItem->GetGradientValue(); + mxLbFillGradFrom->SelectEntry(aGradient.GetStartColor()); + mxLbFillGradTo->SelectEntry(aGradient.GetEndColor()); + mxGradientStyle->set_active( + sal::static_int_cast<sal_Int32>(aGradient.GetGradientStyle())); + if (mxGradientStyle->get_active() == sal_Int32(GradientStyle::Radial)) + mxMTRAngle->set_sensitive(false); + else + mxMTRAngle->set_value(toDegrees(aGradient.GetAngle()), + FieldUnit::DEGREE); + } + else + { + mxLbFillAttr->set_active(-1); + } + } + else + { + mxLbFillAttr->set_active(-1); + } } break; }
