diff options
author | Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de> | 2022-09-19 14:10:39 +0200 |
---|---|---|
committer | Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de> | 2022-09-19 16:15:00 +0200 |
commit | 29cba5c6fd36280107115b58aae61e5ead7e4d6a (patch) | |
tree | 21c17cb2a7f1c558d6a9f61f8c3e372f819ef3f2 | |
parent | 4da1b6a0499ab9bb142156dd0a240b260a430a21 (diff) |
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 <samuel.mehrbrodt@allotropia.de>
-rw-r--r-- | svx/source/sidebar/area/AreaPropertyPanelBase.cxx | 65 |
1 files changed, 51 insertions, 14 deletions
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; } |