summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>2022-09-19 14:10:39 +0200
committerSamuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>2022-09-19 16:15:00 +0200
commit29cba5c6fd36280107115b58aae61e5ead7e4d6a (patch)
tree21c17cb2a7f1c558d6a9f61f8c3e372f819ef3f2
parent4da1b6a0499ab9bb142156dd0a240b260a430a21 (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.cxx65
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;
}