chart2/source/controller/dialogs/tp_ChartColorPalette.cxx | 73 ++--- chart2/source/controller/dialogs/tp_ChartColorPalette.hxx | 12 chart2/source/controller/sidebar/ChartColorPaletteControl.cxx | 127 ++++++---- chart2/source/controller/sidebar/ChartColorPaletteControl.hxx | 30 +- chart2/source/controller/sidebar/ChartColorsPanel.cxx | 23 + chart2/source/inc/ChartColorPalettes.hxx | 40 ++- chart2/source/tools/ChartColorPalettes.cxx | 97 ++++++- chart2/uiconfig/ui/chartcolorpalettepopup.ui | 81 ++++-- chart2/uiconfig/ui/tp_ChartColorPalette.ui | 72 ++++- 9 files changed, 386 insertions(+), 169 deletions(-)
New commits: commit a26c93a6305bed437ab505713950858893db519d Author: Marco Cecchetti <marco.cecche...@collabora.com> AuthorDate: Sun Aug 10 22:33:37 2025 +0200 Commit: Marco Cecchetti <marco.cecche...@collabora.com> CommitDate: Sun Aug 24 23:21:59 2025 +0200 chart color palettes: switch from drawingarea to IconView Change-Id: Ie57acb02473ed5f51c4a2b969786418f6630bfb3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189536 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190037 Tested-by: Jenkins Reviewed-by: Marco Cecchetti <marco.cecche...@collabora.com> diff --git a/chart2/source/controller/dialogs/tp_ChartColorPalette.cxx b/chart2/source/controller/dialogs/tp_ChartColorPalette.cxx index c52148c9dc17..fd5af1885ace 100644 --- a/chart2/source/controller/dialogs/tp_ChartColorPalette.cxx +++ b/chart2/source/controller/dialogs/tp_ChartColorPalette.cxx @@ -32,35 +32,20 @@ ChartColorPaletteTabPage::ChartColorPaletteTabPage(weld::Container* pPage, const SfxItemSet& rInAttrs) : SfxTabPage(pPage, pController, "modules/schart/ui/tp_ChartColorPalette.ui", "tp_ChartColorPalette", &rInAttrs) - , mxColorfulValueSet(new ChartColorPalettes) - , mxColorfulValueSetWin( - new weld::CustomWeld(*m_xBuilder, "colorful_palettes", *mxColorfulValueSet)) - , mxMonoValueSet(new ChartColorPalettes) - , mxMonoValueSetWin( - new weld::CustomWeld(*m_xBuilder, "monochromatic_palettes", *mxMonoValueSet)) + , mxColorfulPalettes(new ChartColorPalettes(*m_xBuilder, "colorful_palettes", "colorfulwin")) + , mxMonoPalettes( + new ChartColorPalettes(*m_xBuilder, "monochromatic_palettes", "monochromaticwin")) { - mxColorfulValueSet->SetColCount(2); - mxColorfulValueSet->SetLineCount(2); - mxColorfulValueSet->SetColor(Application::GetSettings().GetStyleSettings().GetFaceColor()); + mxColorfulPalettes->SetSelectHdl( + LINK(this, ChartColorPaletteTabPage, SelectColorfulPaletteHdl)); - mxMonoValueSet->SetColCount(2); - mxMonoValueSet->SetLineCount(3); - mxMonoValueSet->SetColor(Application::GetSettings().GetStyleSettings().GetFaceColor()); - - mxColorfulValueSet->SetOptimalSize(); - mxColorfulValueSet->SetSelectHdl( - LINK(this, ChartColorPaletteTabPage, SelectColorfulValueSetHdl)); - - mxMonoValueSet->SetOptimalSize(); - mxMonoValueSet->SetSelectHdl(LINK(this, ChartColorPaletteTabPage, SelectMonoValueSetHdl)); + mxMonoPalettes->SetSelectHdl(LINK(this, ChartColorPaletteTabPage, SelectMonoPaletteHdl)); } ChartColorPaletteTabPage::~ChartColorPaletteTabPage() { - mxColorfulValueSetWin.reset(); - mxColorfulValueSet.reset(); - mxMonoValueSetWin.reset(); - mxMonoValueSet.reset(); + mxColorfulPalettes.reset(); + mxMonoPalettes.reset(); } std::unique_ptr<SfxTabPage> ChartColorPaletteTabPage::Create(weld::Container* pPage, @@ -88,10 +73,12 @@ void ChartColorPaletteTabPage::initColorPalettes() const return; // colorful palettes for (size_t i = 0; i < ChartColorPaletteHelper::ColorfulPaletteSize; ++i) - mxColorfulValueSet->insert(mxHelper->getColorPalette(ChartColorPaletteType::Colorful, i)); + mxColorfulPalettes->insert(mxHelper->getColorPalette(ChartColorPaletteType::Colorful, i)); + mxColorfulPalettes->Fill(); // monotonic palettes for (size_t i = 0; i < ChartColorPaletteHelper::MonotonicPaletteSize; ++i) - mxMonoValueSet->insert(mxHelper->getColorPalette(ChartColorPaletteType::Monochromatic, i)); + mxMonoPalettes->insert(mxHelper->getColorPalette(ChartColorPaletteType::Monochromatic, i)); + mxMonoPalettes->Fill(); } void ChartColorPaletteTabPage::selectItem(const ChartColorPaletteType eType, @@ -101,16 +88,16 @@ void ChartColorPaletteTabPage::selectItem(const ChartColorPaletteType eType, { default: case ChartColorPaletteType::Unknown: - mxColorfulValueSet->SetNoSelection(); - mxMonoValueSet->SetNoSelection(); + mxColorfulPalettes->SetNoSelection(); + mxMonoPalettes->SetNoSelection(); break; case ChartColorPaletteType::Colorful: - mxMonoValueSet->SetNoSelection(); - mxColorfulValueSet->SelectItem(nIndex); + mxMonoPalettes->SetNoSelection(); + mxColorfulPalettes->SelectItem(nIndex); break; case ChartColorPaletteType::Monochromatic: - mxColorfulValueSet->SetNoSelection(); - mxMonoValueSet->SelectItem(nIndex); + mxColorfulPalettes->SetNoSelection(); + mxMonoPalettes->SelectItem(nIndex); break; } } @@ -120,15 +107,15 @@ bool ChartColorPaletteTabPage::FillItemSet(SfxItemSet* pOutAttrs) ChartColorPaletteType eType = ChartColorPaletteType::Unknown; sal_uInt32 nIndex = 0; - if (!mxColorfulValueSet->IsNoSelection()) + if (!mxColorfulPalettes->IsNoSelection()) { eType = ChartColorPaletteType::Colorful; - nIndex = mxColorfulValueSet->GetSelectedItemId() - 1; + nIndex = mxColorfulPalettes->GetSelectedItemId() - 1; } - else if (!mxMonoValueSet->IsNoSelection()) + else if (!mxMonoPalettes->IsNoSelection()) { eType = ChartColorPaletteType::Monochromatic; - nIndex = mxMonoValueSet->GetSelectedItemId() - 1; + nIndex = mxMonoPalettes->GetSelectedItemId() - 1; } pOutAttrs->Put(SvxChartColorPaletteItem(eType, nIndex, SCHATTR_COLOR_PALETTE)); @@ -149,26 +136,28 @@ DeactivateRC ChartColorPaletteTabPage::DeactivatePage(SfxItemSet* pItemSet) return DeactivateRC::LeavePage; } -IMPL_LINK_NOARG(ChartColorPaletteTabPage, SelectColorfulValueSetHdl, ValueSet*, void) +IMPL_LINK_NOARG(ChartColorPaletteTabPage, SelectColorfulPaletteHdl, weld::IconView&, bool) { - sal_uInt32 nIndex = SelectValueSetHdl(mxColorfulValueSet); + sal_uInt32 nIndex = SelectPaletteHdl(mxColorfulPalettes); if (nIndex != static_cast<sal_uInt32>(-1)) { - mxMonoValueSet->SetNoSelection(); + mxMonoPalettes->SetNoSelection(); } + return true; } -IMPL_LINK_NOARG(ChartColorPaletteTabPage, SelectMonoValueSetHdl, ValueSet*, void) +IMPL_LINK_NOARG(ChartColorPaletteTabPage, SelectMonoPaletteHdl, weld::IconView&, bool) { - sal_uInt32 nIndex = SelectValueSetHdl(mxMonoValueSet); + sal_uInt32 nIndex = SelectPaletteHdl(mxMonoPalettes); if (nIndex != static_cast<sal_uInt32>(-1)) { - mxColorfulValueSet->SetNoSelection(); + mxColorfulPalettes->SetNoSelection(); } + return true; } sal_uInt32 -ChartColorPaletteTabPage::SelectValueSetHdl(const std::unique_ptr<ChartColorPalettes>& xValueSet) +ChartColorPaletteTabPage::SelectPaletteHdl(const std::unique_ptr<ChartColorPalettes>& xValueSet) { const sal_uInt32 nItemId = xValueSet->GetSelectedItemId(); diff --git a/chart2/source/controller/dialogs/tp_ChartColorPalette.hxx b/chart2/source/controller/dialogs/tp_ChartColorPalette.hxx index 53ea633585a6..7f24977f6464 100644 --- a/chart2/source/controller/dialogs/tp_ChartColorPalette.hxx +++ b/chart2/source/controller/dialogs/tp_ChartColorPalette.hxx @@ -52,14 +52,12 @@ private: private: rtl::Reference<ChartModel> mxChartModel; std::unique_ptr<ChartColorPaletteHelper> mxHelper; - std::unique_ptr<ChartColorPalettes> mxColorfulValueSet; - std::unique_ptr<weld::CustomWeld> mxColorfulValueSetWin; - std::unique_ptr<ChartColorPalettes> mxMonoValueSet; - std::unique_ptr<weld::CustomWeld> mxMonoValueSetWin; + std::unique_ptr<ChartColorPalettes> mxColorfulPalettes; + std::unique_ptr<ChartColorPalettes> mxMonoPalettes; - DECL_LINK(SelectColorfulValueSetHdl, ValueSet*, void); - DECL_LINK(SelectMonoValueSetHdl, ValueSet*, void); - static sal_uInt32 SelectValueSetHdl(const std::unique_ptr<ChartColorPalettes>& xValueSet); + DECL_LINK(SelectColorfulPaletteHdl, weld::IconView&, bool); + DECL_LINK(SelectMonoPaletteHdl, weld::IconView&, bool); + static sal_uInt32 SelectPaletteHdl(const std::unique_ptr<ChartColorPalettes>& xValueSet); }; } //namespace chart diff --git a/chart2/source/controller/sidebar/ChartColorPaletteControl.cxx b/chart2/source/controller/sidebar/ChartColorPaletteControl.cxx index ae055f942e9b..477728f39259 100644 --- a/chart2/source/controller/sidebar/ChartColorPaletteControl.cxx +++ b/chart2/source/controller/sidebar/ChartColorPaletteControl.cxx @@ -244,34 +244,21 @@ ChartColorPalettePopup::ChartColorPalettePopup(ChartColorPaletteControl* pContro : WeldToolbarPopup(pControl->getFrameInterface(), pParent, "modules/schart/ui/chartcolorpalettepopup.ui", "ColorPaletteWindow") , mxControl(pControl) - , mxColorfulValueSet(new ChartColorPalettes) - , mxColorfulValueSetWin( - new weld::CustomWeld(*m_xBuilder, "colorful_palettes", *mxColorfulValueSet)) - , mxMonoValueSet(new ChartColorPalettes) - , mxMonoValueSetWin( - new weld::CustomWeld(*m_xBuilder, "monochromatic_palettes", *mxMonoValueSet)) + , mxColorfulPalettes(new ChartColorPalettes(*m_xBuilder, "colorful_palettes", "colorfulwin")) + , mxMonoPalettes( + new ChartColorPalettes(*m_xBuilder, "monochromatic_palettes", "monochromaticwin")) , meHighlightedItemType(mxControl->getColorPaletteType()) , mnHighlightedItemId(mxControl->getColorPaletteIndex()) , mbItemSelected(false) { - mxColorfulValueSet->SetColCount(2); - mxColorfulValueSet->SetLineCount(2); - mxColorfulValueSet->SetColor(Application::GetSettings().GetStyleSettings().GetFaceColor()); + mxColorfulPalettes->SetSelectHdl(LINK(this, ChartColorPalettePopup, SelectColorfulPaletteHdl)); + mxColorfulPalettes->setMouseMoveHdl(LINK(this, ChartColorPalettePopup, ColorfulMouseMoveHdl)); - mxMonoValueSet->SetColCount(2); - mxMonoValueSet->SetLineCount(3); - mxMonoValueSet->SetColor(Application::GetSettings().GetStyleSettings().GetFaceColor()); + mxMonoPalettes->SetSelectHdl(LINK(this, ChartColorPalettePopup, SelectMonoPaletteHdl)); + mxMonoPalettes->setMouseMoveHdl(LINK(this, ChartColorPalettePopup, MonoMouseMoveHdl)); initColorPalettes(); - mxColorfulValueSet->SetOptimalSize(); - mxColorfulValueSet->SetSelectHdl(LINK(this, ChartColorPalettePopup, SelectColorfulValueSetHdl)); - mxColorfulValueSet->setMouseMoveHdl(LINK(this, ChartColorPalettePopup, ColorfulMouseMoveHdl)); - - mxMonoValueSet->SetOptimalSize(); - mxMonoValueSet->SetSelectHdl(LINK(this, ChartColorPalettePopup, SelectMonoValueSetHdl)); - mxMonoValueSet->setMouseMoveHdl(LINK(this, ChartColorPalettePopup, MonoMouseMoveHdl)); - selectItem(mxControl->getColorPaletteType(), mxControl->getColorPaletteIndex() + 1); mxControl->createDiagramSnapshot(); @@ -290,14 +277,14 @@ void ChartColorPalettePopup::selectItem(const ChartColorPaletteType eType, { default: case ChartColorPaletteType::Unknown: - mxColorfulValueSet->SetNoSelection(); - mxMonoValueSet->SetNoSelection(); + mxColorfulPalettes->SetNoSelection(); + mxMonoPalettes->SetNoSelection(); break; case ChartColorPaletteType::Colorful: - mxColorfulValueSet->SelectItem(nIndex); + mxColorfulPalettes->SelectItem(nIndex); break; case ChartColorPaletteType::Monochromatic: - mxMonoValueSet->SelectItem(nIndex); + mxMonoPalettes->SelectItem(nIndex); break; } } @@ -309,57 +296,60 @@ void ChartColorPalettePopup::initColorPalettes() const return; // colorful palettes for (size_t i = 0; i < ChartColorPaletteHelper::ColorfulPaletteSize; ++i) - mxColorfulValueSet->insert( + mxColorfulPalettes->insert( pColorPaletteHelper->getColorPalette(ChartColorPaletteType::Colorful, i)); + mxColorfulPalettes->Fill(); // monotonic palettes for (size_t i = 0; i < ChartColorPaletteHelper::MonotonicPaletteSize; ++i) - mxMonoValueSet->insert( + mxMonoPalettes->insert( pColorPaletteHelper->getColorPalette(ChartColorPaletteType::Monochromatic, i)); + mxMonoPalettes->Fill(); } void ChartColorPalettePopup::GrabFocus() { - if (mxMonoValueSet->IsNoSelection()) - mxColorfulValueSet->GrabFocus(); + if (mxMonoPalettes->IsNoSelection()) + mxColorfulPalettes->GrabFocus(); else - mxMonoValueSet->GrabFocus(); + mxMonoPalettes->GrabFocus(); } -IMPL_LINK_NOARG(ChartColorPalettePopup, SelectColorfulValueSetHdl, ValueSet*, void) +IMPL_LINK_NOARG(ChartColorPalettePopup, SelectColorfulPaletteHdl, weld::IconView&, bool) { - sal_uInt32 nIndex = SelectValueSetHdl(mxColorfulValueSet); + sal_uInt32 nIndex = SelectPaletteHdl(mxColorfulPalettes); if (nIndex != static_cast<sal_uInt32>(-1)) { mxControl->dispatchColorPaletteCommand(ChartColorPaletteType::Colorful, nIndex); - mxMonoValueSet->SetNoSelection(); + mxMonoPalettes->SetNoSelection(); mxControl->updateStatus(); } mxControl->EndPopupMode(); + return true; } -IMPL_LINK_NOARG(ChartColorPalettePopup, SelectMonoValueSetHdl, ValueSet*, void) +IMPL_LINK_NOARG(ChartColorPalettePopup, SelectMonoPaletteHdl, weld::IconView&, bool) { - sal_uInt32 nIndex = SelectValueSetHdl(mxMonoValueSet); + sal_uInt32 nIndex = SelectPaletteHdl(mxMonoPalettes); if (nIndex != static_cast<sal_uInt32>(-1)) { mxControl->dispatchColorPaletteCommand(ChartColorPaletteType::Monochromatic, nIndex); - mxColorfulValueSet->SetNoSelection(); + mxColorfulPalettes->SetNoSelection(); mxControl->updateStatus(); } mxControl->EndPopupMode(); + return true; } sal_uInt32 -ChartColorPalettePopup::SelectValueSetHdl(const std::unique_ptr<ChartColorPalettes>& xValueSet) +ChartColorPalettePopup::SelectPaletteHdl(const std::unique_ptr<ChartColorPalettes>& xPalettes) { - const sal_uInt32 nItemId = xValueSet->GetSelectedItemId(); - + const sal_uInt32 nItemId = xPalettes->GetSelectedItemId(); if (!nItemId) return static_cast<sal_uInt32>(-1); const sal_uInt32 nIndex = nItemId - 1; - if (const ChartColorPalette* pPalette = xValueSet->getPalette(nIndex)) + if (const ChartColorPalette* pPalette = xPalettes->getPalette(nIndex)) { mxControl->applyColorPalette(pPalette); mbItemSelected = true; @@ -368,26 +358,28 @@ ChartColorPalettePopup::SelectValueSetHdl(const std::unique_ptr<ChartColorPalett return static_cast<sal_uInt32>(-1); } -IMPL_LINK_NOARG(ChartColorPalettePopup, ColorfulMouseMoveHdl, const MouseEvent&, void) +IMPL_LINK_NOARG(ChartColorPalettePopup, ColorfulMouseMoveHdl, const MouseEvent&, bool) { - MouseMoveHdl(mxColorfulValueSet, ChartColorPaletteType::Colorful); + MouseMoveHdl(mxColorfulPalettes, ChartColorPaletteType::Colorful); + return true; } -IMPL_LINK_NOARG(ChartColorPalettePopup, MonoMouseMoveHdl, const MouseEvent&, void) +IMPL_LINK_NOARG(ChartColorPalettePopup, MonoMouseMoveHdl, const MouseEvent&, bool) { - MouseMoveHdl(mxMonoValueSet, ChartColorPaletteType::Monochromatic); + MouseMoveHdl(mxMonoPalettes, ChartColorPaletteType::Monochromatic); + return true; } -void ChartColorPalettePopup::MouseMoveHdl(const std::unique_ptr<ChartColorPalettes>& xValueSet, +void ChartColorPalettePopup::MouseMoveHdl(const std::unique_ptr<ChartColorPalettes>& xPalettes, const ChartColorPaletteType eHlItemType) { - const sal_uInt16 nHlId = xValueSet->GetHighlightedItemId(); + const sal_uInt16 nHlId = xPalettes->GetHighlightedItemId(); if (eHlItemType == meHighlightedItemType && nHlId == mnHighlightedItemId) return; if (nHlId > 0) { - if (const ChartColorPalette* pPalette = xValueSet->getPalette(nHlId - 1)) + if (const ChartColorPalette* pPalette = xPalettes->getPalette(nHlId - 1)) { mxControl->applyColorPalette(pPalette); } diff --git a/chart2/source/controller/sidebar/ChartColorPaletteControl.hxx b/chart2/source/controller/sidebar/ChartColorPaletteControl.hxx index ad243f5c860b..6eb656716480 100644 --- a/chart2/source/controller/sidebar/ChartColorPaletteControl.hxx +++ b/chart2/source/controller/sidebar/ChartColorPaletteControl.hxx @@ -77,22 +77,20 @@ private: class ChartColorPalettePopup final : public WeldToolbarPopup { rtl::Reference<ChartColorPaletteControl> mxControl; - std::unique_ptr<ChartColorPalettes> mxColorfulValueSet; - std::unique_ptr<weld::CustomWeld> mxColorfulValueSetWin; - std::unique_ptr<ChartColorPalettes> mxMonoValueSet; - std::unique_ptr<weld::CustomWeld> mxMonoValueSetWin; + std::unique_ptr<ChartColorPalettes> mxColorfulPalettes; + std::unique_ptr<ChartColorPalettes> mxMonoPalettes; ChartColorPaletteType meHighlightedItemType; sal_uInt16 mnHighlightedItemId; bool mbItemSelected; - DECL_LINK(SelectColorfulValueSetHdl, ValueSet*, void); - DECL_LINK(SelectMonoValueSetHdl, ValueSet*, void); - sal_uInt32 SelectValueSetHdl(const std::unique_ptr<ChartColorPalettes>& xValueSet); + DECL_LINK(SelectColorfulPaletteHdl, weld::IconView&, bool); + DECL_LINK(SelectMonoPaletteHdl, weld::IconView&, bool); + sal_uInt32 SelectPaletteHdl(const std::unique_ptr<ChartColorPalettes>& xPalettes); - DECL_LINK(ColorfulMouseMoveHdl, const MouseEvent&, void); - DECL_LINK(MonoMouseMoveHdl, const MouseEvent&, void); - void MouseMoveHdl(const std::unique_ptr<ChartColorPalettes>& xValueSet, + DECL_LINK(ColorfulMouseMoveHdl, const MouseEvent&, bool); + DECL_LINK(MonoMouseMoveHdl, const MouseEvent&, bool); + void MouseMoveHdl(const std::unique_ptr<ChartColorPalettes>& xPalettes, ChartColorPaletteType eHlItemType); void GrabFocus() override; diff --git a/chart2/source/inc/ChartColorPalettes.hxx b/chart2/source/inc/ChartColorPalettes.hxx index 4af31653597b..b14e773c6193 100644 --- a/chart2/source/inc/ChartColorPalettes.hxx +++ b/chart2/source/inc/ChartColorPalettes.hxx @@ -10,34 +10,49 @@ #pragma once #include <svx/ChartColorPaletteType.hxx> -#include <svtools/valueset.hxx> +#include <rtl/ref.hxx> +#include <tools/link.hxx> +#include <vcl/customweld.hxx> + +class MouseEvent; namespace chart { -class ChartColorPalettes final : public ValueSet +class ChartColorPalettes final { public: - typedef Link<const MouseEvent&, void> MouseEventHandler; + typedef Link<const MouseEvent&, bool> MouseEventHandler; private: + weld::Builder& mrBuilder; + std::unique_ptr<weld::IconView> mxIconView; + std::unique_ptr<weld::ScrolledWindow> mxWindow; std::vector<ChartColorPalette> maColorSets; + sal_uInt16 mnHighlightedItemId; MouseEventHandler maMouseMoveHdl; public: - ChartColorPalettes() - : ValueSet(nullptr) - { - } + ChartColorPalettes(weld::Builder& rBuilder, const OUString& id, const OUString& winId); - void SetDrawingArea(weld::DrawingArea* pDrawingArea) override; - void UserDraw(const UserDrawEvent& rUserDrawEvent) override; - void StyleUpdated() override; - bool MouseMove(const MouseEvent& rMEvt) override; + sal_uInt16 GetSelectedItemId(); + sal_uInt16 GetHighlightedItemId(); + void SetSelectHdl(const Link<weld::IconView&, bool>& rLink); + void SetNoSelection(); + void SelectItem(sal_uInt16 nItemId); + bool IsNoSelection(); + void GrabFocus(); void insert(ChartColorPalette const& rColorSet); const ChartColorPalette* getPalette(sal_uInt32 nItem) const; void setMouseMoveHdl(const MouseEventHandler& rLink); + + void Fill(); + +private: + DECL_LINK(OnQueryTooltip, const weld::TreeIter&, OUString); + DECL_LINK(OnMouseMove, const MouseEvent&, bool); }; + } // end namespace chart /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/chart2/source/tools/ChartColorPalettes.cxx b/chart2/source/tools/ChartColorPalettes.cxx index 1ff465d1fea1..6958d0c096f3 100644 --- a/chart2/source/tools/ChartColorPalettes.cxx +++ b/chart2/source/tools/ChartColorPalettes.cxx @@ -10,16 +10,48 @@ #include <ChartColorPalettes.hxx> #include <ChartColorPaletteHelper.hxx> #include <vcl/event.hxx> +#include <vcl/virdev.hxx> namespace chart { constexpr tools::Long BORDER = ChartColorPaletteLayout::ItemBorder; constexpr tools::Long SIZE = ChartColorPaletteLayout::ItemSize; +ChartColorPalettes::ChartColorPalettes(weld::Builder& rBuilder, const OUString& id, + const OUString& winId) + : mrBuilder(rBuilder) + , mxIconView(mrBuilder.weld_icon_view(id)) + , mxWindow(mrBuilder.weld_scrolled_window(winId)) + , mnHighlightedItemId(0) +{ + mxIconView->connect_mouse_move(LINK(this, ChartColorPalettes, OnMouseMove)); + mxIconView->connect_query_tooltip(LINK(this, ChartColorPalettes, OnQueryTooltip)); +} + +void ChartColorPalettes::SetSelectHdl(const Link<weld::IconView&, bool>& rLink) +{ + mxIconView->connect_item_activated(rLink); +} + +sal_uInt16 ChartColorPalettes::GetSelectedItemId() +{ + OUString sId = mxIconView->get_selected_id(); + if (sId.isEmpty()) + return 0; + return sId.toUInt32(); +} + +void ChartColorPalettes::SelectItem(sal_uInt16 nItemId) { mxIconView->select(nItemId - 1); } + +void ChartColorPalettes::SetNoSelection() { mxIconView->unselect_all(); } + +bool ChartColorPalettes::IsNoSelection() { return mxIconView->get_selected_id().isEmpty(); } + +void ChartColorPalettes::GrabFocus() { mxIconView->grab_focus(); } + void ChartColorPalettes::insert(ChartColorPalette const& rColorSet) { maColorSets.push_back(rColorSet); - InsertItem(maColorSets.size()); } const ChartColorPalette* ChartColorPalettes::getPalette(const sal_uInt32 nItem) const @@ -31,39 +63,62 @@ const ChartColorPalette* ChartColorPalettes::getPalette(const sal_uInt32 nItem) return nullptr; } -void ChartColorPalettes::SetDrawingArea(weld::DrawingArea* pDrawingArea) -{ - ValueSet::SetDrawingArea(pDrawingArea); - SetStyle(WB_TABSTOP | WB_DOUBLEBORDER | WB_FLATVALUESET); - SetItemWidth(BORDER * 6 + SIZE * ChartColorPaletteSize / 2); - SetItemHeight(BORDER * 5 + SIZE * 2); -} +sal_uInt16 ChartColorPalettes::GetHighlightedItemId() { return mnHighlightedItemId; } -void ChartColorPalettes::UserDraw(const UserDrawEvent& rUserDrawEvent) +void ChartColorPalettes::setMouseMoveHdl(const MouseEventHandler& rLink) { maMouseMoveHdl = rLink; } + +void ChartColorPalettes::Fill() { - vcl::RenderContext* pDev = rUserDrawEvent.GetRenderContext(); - const tools::Rectangle aDrawArea = rUserDrawEvent.GetRect(); - const sal_uInt16 nItemId = rUserDrawEvent.GetItemId(); - ChartColorPalette const& rColorSet = maColorSets[nItemId - 1]; - ChartColorPaletteHelper::renderColorPalette(pDev, aDrawArea, rColorSet, false); + const sal_uInt32 nColumns = 2; + const Size aSize(BORDER * 6 + SIZE * ChartColorPaletteSize / 2, BORDER * 5 + SIZE * 2); + + const sal_uInt32 nRows = maColorSets.size() / nColumns; + mxIconView->set_item_width(aSize.getWidth()); + mxIconView->set_size_request(nColumns * (aSize.getWidth() + 8), + nRows * (aSize.getHeight() + 8)); + + mxIconView->clear(); + + mxIconView->freeze(); + + VclPtr<VirtualDevice> pVDev = VclPtr<VirtualDevice>::Create(); + pVDev->SetOutputSizePixel(aSize); + + tools::Rectangle aDrawArea(0, 0, aSize.getWidth(), aSize.getHeight()); + for (size_t i = 0; i < maColorSets.size(); ++i) + { + const ChartColorPalette& rColorSet = maColorSets[i]; + pVDev->Erase(); + ChartColorPaletteHelper::renderColorPalette(pVDev, aDrawArea, rColorSet, false); + OUString sId = OUString::number(i + 1); + OUString sName = "Palette " + OUString::number(i + 1); + + Bitmap aBitmap(pVDev->GetBitmap(Point(0, 0), pVDev->GetOutputSizePixel())); + mxIconView->insert(-1, &sName, &sId, &aBitmap, nullptr); + } + + mxIconView->thaw(); + mnHighlightedItemId = 0; } -void ChartColorPalettes::StyleUpdated() +IMPL_LINK(ChartColorPalettes, OnQueryTooltip, const weld::TreeIter&, rIter, OUString) { - SetFormat(); - Invalidate(); - ValueSet::StyleUpdated(); + OUString sId = mxIconView->get_id(rIter); + mnHighlightedItemId = sId.isEmpty() ? 0 : static_cast<sal_uInt16>(sId.toUInt32()); + + // Suppress actual tooltip text. + return {}; } -bool ChartColorPalettes::MouseMove(const MouseEvent& rMEvt) +IMPL_LINK(ChartColorPalettes, OnMouseMove, const MouseEvent&, rMouseEvent, bool) { - bool bRes = ValueSet::MouseMove(rMEvt); - maMouseMoveHdl.Call(rMEvt); - return bRes; + if (rMouseEvent.IsLeaveWindow()) + mnHighlightedItemId = 0; + if (maMouseMoveHdl.IsSet()) + return maMouseMoveHdl.Call(rMouseEvent); + return false; } -void ChartColorPalettes::setMouseMoveHdl(const MouseEventHandler& rLink) { maMouseMoveHdl = rLink; } - } // end namespace chart /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/chart2/uiconfig/ui/chartcolorpalettepopup.ui b/chart2/uiconfig/ui/chartcolorpalettepopup.ui index 0bb803ae9a5b..cf5265795d69 100644 --- a/chart2/uiconfig/ui/chartcolorpalettepopup.ui +++ b/chart2/uiconfig/ui/chartcolorpalettepopup.ui @@ -2,12 +2,30 @@ <!-- Generated with glade 3.40.0 --> <interface domain="chart"> <requires lib="gtk+" version="3.20"/> + <object class="GtkTreeStore" id="liststore1"> + <columns> + <!-- column-name pixbuf --> + <column type="GdkPixbuf"/> + <!-- column-name id --> + <column type="gchararray"/> + </columns> + </object> + <object class="GtkTreeStore" id="liststore2"> + <columns> + <!-- column-name pixbuf --> + <column type="GdkPixbuf"/> + <!-- column-name id --> + <column type="gchararray"/> + </columns> + </object> <object class="GtkPopover" id="ColorPaletteWindow"> <property name="can-focus">False</property> <child> <object class="GtkBox" id="container"> <property name="visible">True</property> <property name="can-focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> <property name="orientation">vertical</property> <property name="spacing">6</property> <child> @@ -16,6 +34,7 @@ <property name="visible">True</property> <property name="can-focus">False</property> <property name="hexpand">True</property> + <property name="vexpand">True</property> <property name="border-width">6</property> <property name="row-spacing">3</property> <property name="column-spacing">6</property> @@ -41,23 +60,26 @@ <object class="GtkScrolledWindow" id="colorfulwin"> <property name="visible">True</property> <property name="can-focus">True</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> <property name="shadow-type">in</property> <child> - <object class="GtkViewport"> + <object class="GtkIconView" id="colorful_palettes"> <property name="visible">True</property> - <property name="can-focus">False</property> - <child> - <object class="GtkDrawingArea" id="colorful_palettes"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="events">GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK</property> - <property name="hexpand">True</property> - <property name="vexpand">True</property> - <accessibility> - <relation type="labelled-by" target="label1"/> - </accessibility> - </object> - </child> + <property name="can-focus">True</property> + <property name="margin">0</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="model">liststore1</property> + <property name="pixbuf-column">0</property> + <property name="columns">2</property> + <property name="row-spacing">0</property> + <property name="column-spacing">0</property> + <property name="item-padding">4</property> + <property name="activate-on-single-click">True</property> + <accessibility> + <relation type="labelled-by" target="label1"/> + </accessibility> </object> </child> </object> @@ -89,23 +111,26 @@ <object class="GtkScrolledWindow" id="monochromaticwin"> <property name="visible">True</property> <property name="can-focus">True</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> <property name="shadow-type">in</property> <child> - <object class="GtkViewport"> + <object class="GtkIconView" id="monochromatic_palettes"> <property name="visible">True</property> - <property name="can-focus">False</property> - <child> - <object class="GtkDrawingArea" id="monochromatic_palettes"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK</property> - <property name="hexpand">True</property> - <property name="vexpand">True</property> - <accessibility> - <relation type="labelled-by" target="label2"/> - </accessibility> - </object> - </child> + <property name="can-focus">True</property> + <property name="margin">0</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="model">liststore2</property> + <property name="pixbuf-column">0</property> + <property name="columns">2</property> + <property name="row-spacing">0</property> + <property name="column-spacing">0</property> + <property name="item-padding">4</property> + <property name="activate-on-single-click">True</property> + <accessibility> + <relation type="labelled-by" target="label2"/> + </accessibility> </object> </child> </object> diff --git a/chart2/uiconfig/ui/tp_ChartColorPalette.ui b/chart2/uiconfig/ui/tp_ChartColorPalette.ui index 3fb233011922..f79e1b9b3e8e 100644 --- a/chart2/uiconfig/ui/tp_ChartColorPalette.ui +++ b/chart2/uiconfig/ui/tp_ChartColorPalette.ui @@ -2,6 +2,22 @@ <!-- Generated with glade 3.40.0 --> <interface domain="chart"> <requires lib="gtk+" version="3.20"/> + <object class="GtkTreeStore" id="liststore1"> + <columns> + <!-- column-name pixbuf --> + <column type="GdkPixbuf"/> + <!-- column-name id --> + <column type="gchararray"/> + </columns> + </object> + <object class="GtkTreeStore" id="liststore2"> + <columns> + <!-- column-name pixbuf --> + <column type="GdkPixbuf"/> + <!-- column-name id --> + <column type="gchararray"/> + </columns> + </object> <object class="GtkBox" id="tp_ChartColorPalette"> <property name="visible">True</property> <property name="can-focus">False</property> @@ -24,17 +40,22 @@ <property name="valign">start</property> <property name="shadow-type">in</property> <child> - <object class="GtkViewport"> + <object class="GtkIconView" id="colorful_palettes"> <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="valign">start</property> - <child> - <object class="GtkDrawingArea" id="colorful_palettes"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="valign">start</property> - </object> - </child> + <property name="can-focus">True</property> + <property name="margin">0</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="model">liststore1</property> + <property name="pixbuf-column">0</property> + <property name="columns">2</property> + <property name="row-spacing">0</property> + <property name="column-spacing">0</property> + <property name="item-padding">4</property> + <property name="activate-on-single-click">True</property> + <accessibility> + <relation type="labelled-by" target="LBL_COLORFUL"/> + </accessibility> </object> </child> </object> @@ -48,6 +69,9 @@ <attributes> <attribute name="weight" value="bold"/> </attributes> + <accessibility> + <relation type="label-for" target="colorful_palettes"/> + </accessibility> </object> </child> </object> @@ -74,17 +98,22 @@ <property name="valign">start</property> <property name="shadow-type">in</property> <child> - <object class="GtkViewport"> + <object class="GtkIconView" id="monochromatic_palettes"> <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="valign">start</property> - <child> - <object class="GtkDrawingArea" id="monochromatic_palettes"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="valign">start</property> - </object> - </child> + <property name="can-focus">True</property> + <property name="margin">0</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="model">liststore2</property> + <property name="pixbuf-column">0</property> + <property name="columns">2</property> + <property name="row-spacing">0</property> + <property name="column-spacing">0</property> + <property name="item-padding">4</property> + <property name="activate-on-single-click">True</property> + <accessibility> + <relation type="labelled-by" target="LBL_MONOCHROMATIC"/> + </accessibility> </object> </child> </object> @@ -98,6 +127,9 @@ <attributes> <attribute name="weight" value="bold"/> </attributes> + <accessibility> + <relation type="label-for" target="monochromatic_palettes"/> + </accessibility> </object> </child> </object> commit 25fa7051654704ea7fb218e01dad5a5af4aef53d Author: Marco Cecchetti <marco.cecche...@collabora.com> AuthorDate: Fri May 9 18:11:25 2025 +0200 Commit: Marco Cecchetti <marco.cecche...@collabora.com> CommitDate: Sun Aug 24 23:21:52 2025 +0200 chart preview color palette for data series on mouse over Change-Id: I99b8adefe87cb54d886a7dcead72709568f72c57 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186338 Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190036 Reviewed-by: Marco Cecchetti <marco.cecche...@collabora.com> Tested-by: Jenkins diff --git a/chart2/source/controller/sidebar/ChartColorPaletteControl.cxx b/chart2/source/controller/sidebar/ChartColorPaletteControl.cxx index 7c9a28348b2a..ae055f942e9b 100644 --- a/chart2/source/controller/sidebar/ChartColorPaletteControl.cxx +++ b/chart2/source/controller/sidebar/ChartColorPaletteControl.cxx @@ -123,6 +123,18 @@ void ChartColorPaletteControl::updateStatus(bool bForce) } } +void ChartColorPaletteControl::createDiagramSnapshot() const +{ + if (mpHandler) + mpHandler->createDiagramSnapshot(); +} + +void ChartColorPaletteControl::restoreOriginalDiagram() const +{ + if (mpHandler) + mpHandler->restoreOriginalDiagram(); +} + void ChartColorPaletteControl::renderSelectedColorPalette(const VclPtr<VirtualDevice>& pDev) const { if (!pDev) @@ -238,6 +250,9 @@ ChartColorPalettePopup::ChartColorPalettePopup(ChartColorPaletteControl* pContro , mxMonoValueSet(new ChartColorPalettes) , mxMonoValueSetWin( new weld::CustomWeld(*m_xBuilder, "monochromatic_palettes", *mxMonoValueSet)) + , meHighlightedItemType(mxControl->getColorPaletteType()) + , mnHighlightedItemId(mxControl->getColorPaletteIndex()) + , mbItemSelected(false) { mxColorfulValueSet->SetColCount(2); mxColorfulValueSet->SetLineCount(2); @@ -251,14 +266,22 @@ ChartColorPalettePopup::ChartColorPalettePopup(ChartColorPaletteControl* pContro mxColorfulValueSet->SetOptimalSize(); mxColorfulValueSet->SetSelectHdl(LINK(this, ChartColorPalettePopup, SelectColorfulValueSetHdl)); + mxColorfulValueSet->setMouseMoveHdl(LINK(this, ChartColorPalettePopup, ColorfulMouseMoveHdl)); mxMonoValueSet->SetOptimalSize(); mxMonoValueSet->SetSelectHdl(LINK(this, ChartColorPalettePopup, SelectMonoValueSetHdl)); + mxMonoValueSet->setMouseMoveHdl(LINK(this, ChartColorPalettePopup, MonoMouseMoveHdl)); selectItem(mxControl->getColorPaletteType(), mxControl->getColorPaletteIndex() + 1); + + mxControl->createDiagramSnapshot(); } -ChartColorPalettePopup::~ChartColorPalettePopup() {} +ChartColorPalettePopup::~ChartColorPalettePopup() +{ + if (!mbItemSelected) + mxControl->restoreOriginalDiagram(); +} void ChartColorPalettePopup::selectItem(const ChartColorPaletteType eType, const sal_uInt32 nIndex) const @@ -326,8 +349,8 @@ IMPL_LINK_NOARG(ChartColorPalettePopup, SelectMonoValueSetHdl, ValueSet*, void) mxControl->EndPopupMode(); } -sal_uInt32 ChartColorPalettePopup::SelectValueSetHdl( - const std::unique_ptr<ChartColorPalettes>& xValueSet) const +sal_uInt32 +ChartColorPalettePopup::SelectValueSetHdl(const std::unique_ptr<ChartColorPalettes>& xValueSet) { const sal_uInt32 nItemId = xValueSet->GetSelectedItemId(); @@ -339,11 +362,45 @@ sal_uInt32 ChartColorPalettePopup::SelectValueSetHdl( if (const ChartColorPalette* pPalette = xValueSet->getPalette(nIndex)) { mxControl->applyColorPalette(pPalette); + mbItemSelected = true; return nIndex; } return static_cast<sal_uInt32>(-1); } +IMPL_LINK_NOARG(ChartColorPalettePopup, ColorfulMouseMoveHdl, const MouseEvent&, void) +{ + MouseMoveHdl(mxColorfulValueSet, ChartColorPaletteType::Colorful); +} + +IMPL_LINK_NOARG(ChartColorPalettePopup, MonoMouseMoveHdl, const MouseEvent&, void) +{ + MouseMoveHdl(mxMonoValueSet, ChartColorPaletteType::Monochromatic); +} + +void ChartColorPalettePopup::MouseMoveHdl(const std::unique_ptr<ChartColorPalettes>& xValueSet, + const ChartColorPaletteType eHlItemType) +{ + const sal_uInt16 nHlId = xValueSet->GetHighlightedItemId(); + if (eHlItemType == meHighlightedItemType && nHlId == mnHighlightedItemId) + return; + + if (nHlId > 0) + { + if (const ChartColorPalette* pPalette = xValueSet->getPalette(nHlId - 1)) + { + mxControl->applyColorPalette(pPalette); + } + } + else + { + mxControl->restoreOriginalDiagram(); + } + + meHighlightedItemType = eHlItemType; + mnHighlightedItemId = nHlId; +} + } // end namespace chart::sidebar /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/chart2/source/controller/sidebar/ChartColorPaletteControl.hxx b/chart2/source/controller/sidebar/ChartColorPaletteControl.hxx index 3ba66a1e72ec..ad243f5c860b 100644 --- a/chart2/source/controller/sidebar/ChartColorPaletteControl.hxx +++ b/chart2/source/controller/sidebar/ChartColorPaletteControl.hxx @@ -23,6 +23,10 @@ namespace sidebar struct IColorPaletteHandler { virtual ~IColorPaletteHandler() = default; + + virtual void createDiagramSnapshot() = 0; + virtual void restoreOriginalDiagram() = 0; + virtual void select(ChartColorPaletteType eType, sal_uInt32 nIndex) = 0; virtual void apply(const ChartColorPalette* pColorPalette) = 0; [[nodiscard]] virtual std::shared_ptr<ChartColorPaletteHelper> getHelper() const = 0; @@ -60,6 +64,9 @@ public: void applyColorPalette(const ChartColorPalette* pColorPalette) const; void updateStatus(bool bForce = false); + void createDiagramSnapshot() const; + void restoreOriginalDiagram() const; + private: std::unique_ptr<WeldToolbarPopup> weldPopupWindow() override; VclPtr<vcl::Window> createVclPopupWindow(vcl::Window* pParent) override; @@ -75,9 +82,18 @@ class ChartColorPalettePopup final : public WeldToolbarPopup std::unique_ptr<ChartColorPalettes> mxMonoValueSet; std::unique_ptr<weld::CustomWeld> mxMonoValueSetWin; + ChartColorPaletteType meHighlightedItemType; + sal_uInt16 mnHighlightedItemId; + bool mbItemSelected; + DECL_LINK(SelectColorfulValueSetHdl, ValueSet*, void); DECL_LINK(SelectMonoValueSetHdl, ValueSet*, void); - sal_uInt32 SelectValueSetHdl(const std::unique_ptr<ChartColorPalettes>& xValueSet) const; + sal_uInt32 SelectValueSetHdl(const std::unique_ptr<ChartColorPalettes>& xValueSet); + + DECL_LINK(ColorfulMouseMoveHdl, const MouseEvent&, void); + DECL_LINK(MonoMouseMoveHdl, const MouseEvent&, void); + void MouseMoveHdl(const std::unique_ptr<ChartColorPalettes>& xValueSet, + ChartColorPaletteType eHlItemType); void GrabFocus() override; diff --git a/chart2/source/controller/sidebar/ChartColorsPanel.cxx b/chart2/source/controller/sidebar/ChartColorsPanel.cxx index 89e42f631ceb..1c7670e3ffcb 100644 --- a/chart2/source/controller/sidebar/ChartColorsPanel.cxx +++ b/chart2/source/controller/sidebar/ChartColorsPanel.cxx @@ -25,6 +25,8 @@ #include <ChartColorPaletteHelper.hxx> #include <ChartController.hxx> #include <ChartModel.hxx> +#include <DataSeries.hxx> +#include <Diagram.hxx> #include <com/sun/star/drawing/FillStyle.hpp> @@ -86,6 +88,9 @@ public: void updateModel(const rtl::Reference<ChartModel>& xModel); void updateData() const; + void createDiagramSnapshot() override; + void restoreOriginalDiagram() override; + void select(ChartColorPaletteType eType, sal_uInt32 nIndex) override; void apply(const ChartColorPalette* pColorPalette) override; [[nodiscard]] std::shared_ptr<ChartColorPaletteHelper> getHelper() const override; @@ -95,6 +100,7 @@ public: private: rtl::Reference<ChartModel> mxModel; ChartColorPaletteControl* mpControl; + rtl::Reference<Diagram> mxDiagramSnapshot; }; ColorPaletteWrapper::ColorPaletteWrapper(rtl::Reference<ChartModel> xModel, @@ -119,6 +125,23 @@ void ColorPaletteWrapper::updateData() const mpControl->statusChanged(aEvent); } +void ColorPaletteWrapper::createDiagramSnapshot() +{ + const rtl::Reference<Diagram> xDiagram = mxModel->getFirstChartDiagram(); + mxDiagramSnapshot = new ::chart::Diagram(*xDiagram); +} + +void ColorPaletteWrapper::restoreOriginalDiagram() +{ + if (mxDiagramSnapshot) + { + const rtl::Reference<Diagram> xDiagram = new ::chart::Diagram(*mxDiagramSnapshot); + // setDiagram didn't make a copy internally, so we need to pass a copy or + // the diagram snapshot would be modified on preview + mxModel->setFirstDiagram(xDiagram); + } +} + void ColorPaletteWrapper::select(ChartColorPaletteType eType, const sal_uInt32 nIndex) { mxModel->setColorPalette(eType, nIndex); diff --git a/chart2/source/inc/ChartColorPalettes.hxx b/chart2/source/inc/ChartColorPalettes.hxx index 78e12c396c6f..4af31653597b 100644 --- a/chart2/source/inc/ChartColorPalettes.hxx +++ b/chart2/source/inc/ChartColorPalettes.hxx @@ -16,7 +16,12 @@ namespace chart { class ChartColorPalettes final : public ValueSet { +public: + typedef Link<const MouseEvent&, void> MouseEventHandler; + +private: std::vector<ChartColorPalette> maColorSets; + MouseEventHandler maMouseMoveHdl; public: ChartColorPalettes() @@ -27,9 +32,11 @@ public: void SetDrawingArea(weld::DrawingArea* pDrawingArea) override; void UserDraw(const UserDrawEvent& rUserDrawEvent) override; void StyleUpdated() override; + bool MouseMove(const MouseEvent& rMEvt) override; void insert(ChartColorPalette const& rColorSet); const ChartColorPalette* getPalette(sal_uInt32 nItem) const; + void setMouseMoveHdl(const MouseEventHandler& rLink); }; } // end namespace chart diff --git a/chart2/source/tools/ChartColorPalettes.cxx b/chart2/source/tools/ChartColorPalettes.cxx index dbe7697c7210..1ff465d1fea1 100644 --- a/chart2/source/tools/ChartColorPalettes.cxx +++ b/chart2/source/tools/ChartColorPalettes.cxx @@ -34,7 +34,7 @@ const ChartColorPalette* ChartColorPalettes::getPalette(const sal_uInt32 nItem) void ChartColorPalettes::SetDrawingArea(weld::DrawingArea* pDrawingArea) { ValueSet::SetDrawingArea(pDrawingArea); - SetStyle(WB_TABSTOP | WB_DOUBLEBORDER); + SetStyle(WB_TABSTOP | WB_DOUBLEBORDER | WB_FLATVALUESET); SetItemWidth(BORDER * 6 + SIZE * ChartColorPaletteSize / 2); SetItemHeight(BORDER * 5 + SIZE * 2); } @@ -54,6 +54,16 @@ void ChartColorPalettes::StyleUpdated() Invalidate(); ValueSet::StyleUpdated(); } + +bool ChartColorPalettes::MouseMove(const MouseEvent& rMEvt) +{ + bool bRes = ValueSet::MouseMove(rMEvt); + maMouseMoveHdl.Call(rMEvt); + return bRes; +} + +void ChartColorPalettes::setMouseMoveHdl(const MouseEventHandler& rLink) { maMouseMoveHdl = rLink; } + } // end namespace chart /* vim:set shiftwidth=4 softtabstop=4 expandtab: */