chart2/source/controller/main/ChartController_Tools.cxx |    6 ++++
 vcl/inc/jsdialog/jsdialogbuilder.hxx                    |    2 +
 vcl/jsdialog/jsdialogbuilder.cxx                        |   10 +++++++
 vcl/source/window/toolbox2.cxx                          |   22 ++++++++++------
 4 files changed, 32 insertions(+), 8 deletions(-)

New commits:
commit fb0cd05702852d29ee50d98d305043ac1993885b
Author:     Marco Cecchetti <marco.cecche...@collabora.com>
AuthorDate: Mon Apr 21 12:02:13 2025 +0200
Commit:     Tomaž Vajngerl <qui...@gmail.com>
CommitDate: Thu May 1 08:56:58 2025 +0200

    chart color palette: ui panel is wrong in the lok case
    
    1) Current color palette is not visible in the sidebar panel.
    2) Setting up a custom color for a data series, the current color
    palette icon is not set to the no color palette image.
    
    Change-Id: I6fdcf84878c9e26a6a4ad3e2ba8628ee0dd28924
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184438
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>

diff --git a/chart2/source/controller/main/ChartController_Tools.cxx 
b/chart2/source/controller/main/ChartController_Tools.cxx
index b622a2a9b801..8a650d466b2d 100644
--- a/chart2/source/controller/main/ChartController_Tools.cxx
+++ b/chart2/source/controller/main/ChartController_Tools.cxx
@@ -946,6 +946,12 @@ void ChartController::executeDispatch_FillColor(sal_uInt32 
nColor)
                 ObjectIdentifier::getObjectPropertySet( aCID, xChartModel ) );
             if( xPointProperties.is() )
                 xPointProperties->setPropertyValue( u"FillColor"_ustr, 
uno::Any( nColor ) );
+
+            ObjectType eType = ObjectIdentifier::getObjectType(aCID);
+            if (eType == OBJECTTYPE_DATA_SERIES || eType == 
OBJECTTYPE_DATA_POINT)
+            {
+                xChartModel->clearColorPalette();
+            }
         }
     }
     catch( const uno::Exception& )
diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx 
b/vcl/inc/jsdialog/jsdialogbuilder.hxx
index de68a553ec19..77d646bc1373 100644
--- a/vcl/inc/jsdialog/jsdialogbuilder.hxx
+++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx
@@ -649,6 +649,8 @@ public:
     virtual void set_menu_item_active(const OUString& rIdent, bool bActive) 
override;
     virtual void set_item_sensitive(const OUString& rIdent, bool bSensitive) 
override;
     virtual void set_item_icon_name(const OUString& rIdent, const OUString& 
rIconName) override;
+    virtual void set_item_image(const OUString& rIdent,
+                                const 
css::uno::Reference<css::graphic::XGraphic>& rImage) override;
 };
 
 class JSTextView final : public JSWidget<SalInstanceTextView, 
::VclMultiLineEdit>
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index 9d1aabad460a..20f59f2aa850 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -1643,6 +1643,16 @@ void JSToolbar::set_item_icon_name(const OUString& 
rIdent, const OUString& rIcon
     sendUpdate();
 }
 
+void JSToolbar::set_item_image(const OUString& rIdent,
+                               const 
css::uno::Reference<css::graphic::XGraphic>& rImage)
+{
+    SalInstanceToolbar::set_item_image(rIdent, rImage);
+    if (rIdent == u".uno:ChartColorPalette"_ustr)
+    {
+        sendUpdate();
+    }
+}
+
 JSTextView::JSTextView(JSDialogSender* pSender, ::VclMultiLineEdit* pTextView,
                        SalInstanceBuilder* pBuilder, bool bTakeOwnership)
     : JSWidget<SalInstanceTextView, ::VclMultiLineEdit>(pSender, pTextView, 
pBuilder,
diff --git a/vcl/source/window/toolbox2.cxx b/vcl/source/window/toolbox2.cxx
index 24cd01ed63df..5ae142ae7c2d 100644
--- a/vcl/source/window/toolbox2.cxx
+++ b/vcl/source/window/toolbox2.cxx
@@ -1762,16 +1762,22 @@ void ToolBox::DumpAsPropertyTree(tools::JsonWriter& 
rJsonWriter)
                     rJsonWriter.put("description", sAccDesc);
             }
 
-            Image aImage = GetItemImage(nId);
-            if (!sCommand.startsWith(".uno:") && !!aImage)
+            if (!sCommand.startsWith(".uno:") || sCommand == 
u".uno:ChartColorPalette"_ustr)
             {
-                SvMemoryStream aOStm(6535, 6535);
-                if(GraphicConverter::Export(aOStm, aImage.GetBitmapEx(), 
ConvertDataFormat::PNG) == ERRCODE_NONE)
+                Image aImage = GetItemImage(nId);
+                if (!!aImage)
                 {
-                    css::uno::Sequence<sal_Int8> aSeq( static_cast<sal_Int8 
const *>(aOStm.GetData()), aOStm.Tell());
-                    OStringBuffer aBuffer("data:image/png;base64,");
-                    ::comphelper::Base64::encode(aBuffer, aSeq);
-                    rJsonWriter.put("image", aBuffer);
+                    SvMemoryStream aOStm(6535, 6535);
+                    if (GraphicConverter::Export(aOStm, aImage.GetBitmapEx(),
+                                                 ConvertDataFormat::PNG)
+                        == ERRCODE_NONE)
+                    {
+                        css::uno::Sequence<sal_Int8> aSeq(
+                            static_cast<sal_Int8 const*>(aOStm.GetData()), 
aOStm.Tell());
+                        OStringBuffer aBuffer("data:image/png;base64,");
+                        ::comphelper::Base64::encode(aBuffer, aSeq);
+                        rJsonWriter.put("image", aBuffer);
+                    }
                 }
             }
         }

Reply via email to