summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2015-07-28 02:50:59 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2015-07-28 02:52:05 +0200
commit2d8f1faa97a3dfd38c540e0cd0b73a2e9d621d53 (patch)
treea7ad480a5a53c40588a4a9f9d5de8d1b4669e317 /chart2
parent6949629e35f308ce7efc890319ecf9a46a5f154c (diff)
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
Diffstat (limited to 'chart2')
-rw-r--r--chart2/source/controller/sidebar/ChartAreaPanel.cxx36
1 files changed, 26 insertions, 10 deletions
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<css::frame::XModel> xM
XGradient getXGradientForName(css::uno::Reference<css::frame::XModel> xModel,
const OUString& rName)
{
+
+
try
{
ViewElementListProvider aProvider = getViewElementListProvider(xModel);
@@ -113,6 +115,28 @@ XGradient getXGradientForName(css::uno::Reference<css::frame::XModel> xModel,
return XGradient();
}
+XFillFloatTransparenceItem getXTransparencyGradientForName(css::uno::Reference<css::frame::XModel> xModel,
+ const OUString& rName)
+{
+ css::uno::Reference<css::lang::XMultiServiceFactory> xFact(xModel, css::uno::UNO_QUERY);
+ css::uno::Reference<css::container::XNameAccess> 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<css::frame::XModel> 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()