From 2d8f1faa97a3dfd38c540e0cd0b73a2e9d621d53 Mon Sep 17 00:00:00 2001 From: Markus Mohrhard Date: Tue, 28 Jul 2015 02:50:59 +0200 Subject: fix the last transparency gradient issues in the chart area panel So apparently I was looking up the gradient in the wrong table. Change-Id: I26de6f9bb5f9baf65a7856682a327da611da3ae7 --- .../source/controller/sidebar/ChartAreaPanel.cxx | 36 ++++++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) (limited to 'chart2') diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.cxx b/chart2/source/controller/sidebar/ChartAreaPanel.cxx index 640404a48eed..233371a47c82 100644 --- a/chart2/source/controller/sidebar/ChartAreaPanel.cxx +++ b/chart2/source/controller/sidebar/ChartAreaPanel.cxx @@ -90,6 +90,8 @@ DrawModelWrapper* getDrawModelWrapper(css::uno::Reference xM XGradient getXGradientForName(css::uno::Reference xModel, const OUString& rName) { + + try { ViewElementListProvider aProvider = getViewElementListProvider(xModel); @@ -113,6 +115,28 @@ XGradient getXGradientForName(css::uno::Reference xModel, return XGradient(); } +XFillFloatTransparenceItem getXTransparencyGradientForName(css::uno::Reference xModel, + const OUString& rName) +{ + css::uno::Reference xFact(xModel, css::uno::UNO_QUERY); + css::uno::Reference xNameAccess( + xFact->createInstance("com.sun.star.drawing.TransparencyGradientTable"), css::uno::UNO_QUERY); + if (!xNameAccess.is()) + return XFillFloatTransparenceItem(); + + if (!xNameAccess->hasByName(rName)) + return XFillFloatTransparenceItem(); + + css::uno::Any aAny = xNameAccess->getByName(rName); + + XFillFloatTransparenceItem aItem; + aItem.SetName(rName); + aItem.PutValue(aAny, MID_FILLGRADIENT); + aItem.SetEnabled(true); + + return aItem; +} + XHatch getXHatchFromName(css::uno::Reference xModel, OUString& rName) { @@ -393,16 +417,8 @@ void ChartAreaPanel::updateData() OUString aFillFloatTransparenceName; xPropSet->getPropertyValue("FillTransparenceGradientName") >>= aFillFloatTransparenceName; - XFillFloatTransparenceItem aFillFloatTransparenceItem; - if (!aFillFloatTransparenceName.isEmpty()) - aFillFloatTransparenceItem.SetEnabled(true); - - aFillFloatTransparenceItem.SetName(aFillFloatTransparenceName); - XFillFloatTransparenceItem* pCorrectFloatTransparenceItem = aFillFloatTransparenceItem.checkForUniqueItem(&pModelWrapper->getSdrModel()); - XFillFloatTransparenceItem* pFillFloatTransparenceItem = pCorrectFloatTransparenceItem ? pCorrectFloatTransparenceItem : &aFillFloatTransparenceItem; - pFillFloatTransparenceItem->SetGradientValue(getXGradientForName(mxModel, pFillFloatTransparenceItem->GetName())); - updateFillFloatTransparence(false, true, pFillFloatTransparenceItem); - delete pCorrectFloatTransparenceItem; + XFillFloatTransparenceItem aFillFloatTransparenceItem = getXTransparencyGradientForName(mxModel, aFillFloatTransparenceName); + updateFillFloatTransparence(false, true, &aFillFloatTransparenceItem); } void ChartAreaPanel::modelInvalid() -- cgit