summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2020-09-29 11:19:33 +0200
committerSzymon Kłos <szymon.klos@collabora.com>2020-10-13 09:49:51 +0200
commite360269e8e217359e131ca4ae33a5668a2efab78 (patch)
tree56d84e1f95f75ea41bed6836b1efad6226c98116
parentf9ac067da9e61f479e2433d500b9b940e5a45470 (diff)
Set correct color for chart background in sidebar
Change-Id: Id41fba75133e3473dcb834c72ff2ecfb317ecb79 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103603 Tested-by: Andras Timar <andras.timar@collabora.com> Reviewed-by: Andras Timar <andras.timar@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104201 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
-rw-r--r--sc/source/ui/drawfunc/drawsh2.cxx47
1 files changed, 47 insertions, 0 deletions
diff --git a/sc/source/ui/drawfunc/drawsh2.cxx b/sc/source/ui/drawfunc/drawsh2.cxx
index e51adeabe86b..d71042f5642d 100644
--- a/sc/source/ui/drawfunc/drawsh2.cxx
+++ b/sc/source/ui/drawfunc/drawsh2.cxx
@@ -52,6 +52,11 @@
#include <comphelper/lok.hxx>
#include <LibreOfficeKit/LibreOfficeKitEnums.h>
+#include <svx/xflclit.hxx>
+#include <com/sun/star/chart2/XChartDocument.hpp>
+#include <com/sun/star/embed/XEmbeddedObject.hpp>
+#include <sfx2/ipclient.hxx>
+
#include <com/sun/star/drawing/FillStyle.hpp>
using namespace com::sun::star::drawing;
@@ -308,6 +313,45 @@ void ScDrawShell::GetDrawFuncState( SfxItemSet& rSet ) // disable functions
svx::FontworkBar::getState( pView, rSet );
}
+static void setupFillColorForChart(SfxViewShell* pShell, SfxItemSet& rSet)
+{
+ if (pShell)
+ {
+ SfxInPlaceClient* pIPClient = pShell->GetIPClient();
+ if (pIPClient)
+ {
+ const css::uno::Reference<::css::embed::XEmbeddedObject>& xEmbObj = pIPClient->GetObject();
+ if( xEmbObj.is() )
+ {
+ ::css::uno::Reference<::css::chart2::XChartDocument> xChart( xEmbObj->getComponent(), uno::UNO_QUERY );
+ if( xChart.is() )
+ {
+ css::uno::Reference<css::beans::XPropertySet> xPropSet = xChart->getPageBackground();
+ if (xPropSet.is())
+ {
+ css::uno::Reference<css::beans::XPropertySetInfo> xInfo(xPropSet->getPropertySetInfo());
+ if (xInfo.is())
+ {
+ if (xInfo->hasPropertyByName("FillColor"))
+ {
+ sal_uInt32 nFillColor = 0;
+ xPropSet->getPropertyValue("FillColor") >>= nFillColor;
+
+ XFillColorItem aFillColorItem("", Color(nFillColor));
+ rSet.Put(aFillColorItem);
+
+ if (comphelper::LibreOfficeKit::isActive())
+ pShell->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED,
+ (".uno:FillColor=" + std::to_string(nFillColor)).c_str());
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
// Attributes for Drawing-Objects
void ScDrawShell::GetDrawAttrState( SfxItemSet& rSet )
@@ -352,6 +396,9 @@ void ScDrawShell::GetDrawAttrState( SfxItemSet& rSet )
rSet.Put( SvxSizeItem( SID_ATTR_SIZE, aSize ) );
bActionItem = true;
}
+
+ // Set correct colors for charts in sidebar
+ setupFillColorForChart(pDrView->GetSfxViewShell(), rSet);
}
if ( bActionItem )
return;