diff options
author | Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de> | 2022-09-19 14:10:39 +0200 |
---|---|---|
committer | Thorsten Behrens <thorsten.behrens@allotropia.de> | 2022-09-20 17:31:17 +0200 |
commit | dbd89ccc4fd989f12d42ebcb68aa56ab969e84bd (patch) | |
tree | 485b81f77d2fb79e895ad872559e4381fcaf983c | |
parent | tdf#150402 Correct wrong Bound of Shape in Slideshow (diff) | |
download | core-dbd89ccc4fd989f12d42ebcb68aa56ab969e84bd.tar.gz core-dbd89ccc4fd989f12d42ebcb68aa56ab969e84bd.zip |
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>
(cherry picked from commit c112e426bff4bdf2317363a534495498b0aa215a)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140158
Reviewed-by: Thorsten Behrens <thorsten.behrens@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 6dec785c4067..cd3a484e7bb0 100644 --- a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx +++ b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx @@ -466,26 +466,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; } |