From f1e59c09b28cab61c8b17570a4ab08afbc097d26 Mon Sep 17 00:00:00 2001 From: Balazs Varga Date: Sun, 15 Mar 2026 16:28:34 +0100 Subject: [PATCH] tdf#78486: sc pivot calculated fields, change weld entry to weld textview for formula field. Change-Id: Ia9a309eb95c48d559f97615d2aa3b96c53e82e20 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/201788 Tested-by: Jenkins Reviewed-by: Balazs Varga --- sc/source/ui/dbgui/PivotCalcFieldDialog.cxx | 14 +++++++++----- sc/source/ui/inc/PivotCalcFieldDialog.hxx | 6 +++--- sc/uiconfig/scalc/ui/pivotcalcfielddialog.ui | 20 +++++++++++++++++++- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/sc/source/ui/dbgui/PivotCalcFieldDialog.cxx b/sc/source/ui/dbgui/PivotCalcFieldDialog.cxx index 25a6576fe37f..cdc6b7f83b12 100644 --- a/sc/source/ui/dbgui/PivotCalcFieldDialog.cxx +++ b/sc/source/ui/dbgui/PivotCalcFieldDialog.cxx @@ -51,7 +51,7 @@ ScPivotCalcFieldDlg::ScPivotCalcFieldDlg(weld::Window* pParent, ScViewData& rDat , mrDocument(mrViewData.GetDocument()) , maPivotTableObject(*pDPObj) , mxCalcNames(m_xBuilder->weld_combo_box(u"calcfieldscb"_ustr)) - , mxCalculation(m_xBuilder->weld_entry(u"calcentry"_ustr)) + , mxCalculation(m_xBuilder->weld_text_view(u"calcentry"_ustr)) , mxBtnAdd(m_xBuilder->weld_button(u"addbtn"_ustr)) , mxBtnMod(m_xBuilder->weld_button(u"modbtn"_ustr)) , mxBtnDel(m_xBuilder->weld_button(u"deletebtn"_ustr)) @@ -81,6 +81,7 @@ void ScPivotCalcFieldDlg::Init() mxFieldList->connect_selection_changed(LINK(this, ScPivotCalcFieldDlg, FieldListSelected)); mxCalcNames->connect_changed(LINK(this, ScPivotCalcFieldDlg, CalcFieldNameSelected)); mxCalculation->connect_changed(LINK(this, ScPivotCalcFieldDlg, CalcEntryChanged)); + mxCalculation->set_size_request(-1, mxCalculation->get_height_rows(3)); // Initialize Data maPivotTableObject.FillOldParam(maPivotParameters); @@ -386,7 +387,8 @@ bool ScPivotCalcFieldDlg::DoAddMod() { // Validate the formula before adding or modifying FormulaError eError = FormulaError::NONE; - OUString aCalculation = mxCalculation->get_text(); + OUString aCalculation + = mxCalculation->get_text().replaceAll(u"\r", u"").replaceAll(u"\n", u" "); std::shared_ptr pTokenArray = ValidateFormula(aCalculation, &eError); if (!pTokenArray) { @@ -590,11 +592,13 @@ IMPL_LINK_NOARG(ScPivotCalcFieldDlg, CalcFieldNameSelected, weld::ComboBox&, voi } } -IMPL_LINK_NOARG(ScPivotCalcFieldDlg, CalcEntryChanged, weld::Entry&, void) +IMPL_LINK_NOARG(ScPivotCalcFieldDlg, CalcEntryChanged, weld::TextView&, void) { OUString aName = mxCalcNames->get_active_text(); - if (!aName.isEmpty() && !IsExistingField(aName)) - mxBtnAdd->set_sensitive(true); + OUString aCalc = mxCalculation->get_text().trim(); + bool bEnable = !aCalc.isEmpty() && !aName.isEmpty() && !IsExistingField(aName); + if (mxBtnAdd->get_sensitive() != bEnable) + mxBtnAdd->set_sensitive(bEnable); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/inc/PivotCalcFieldDialog.hxx b/sc/source/ui/inc/PivotCalcFieldDialog.hxx index 134418e0385c..8bca65ad0464 100644 --- a/sc/source/ui/inc/PivotCalcFieldDialog.hxx +++ b/sc/source/ui/inc/PivotCalcFieldDialog.hxx @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include "viewdata.hxx" #include @@ -48,7 +48,7 @@ private: OUString aStrModify; std::unique_ptr mxCalcNames; - std::unique_ptr mxCalculation; + std::unique_ptr mxCalculation; std::unique_ptr mxBtnAdd; std::unique_ptr mxBtnMod; @@ -88,7 +88,7 @@ private: DECL_LINK(DoubleClickHdl, weld::TreeView&, bool); DECL_LINK(FieldListSelected, weld::TreeView&, void); DECL_LINK(CalcFieldNameSelected, weld::ComboBox&, void); - DECL_LINK(CalcEntryChanged, weld::Entry&, void); + DECL_LINK(CalcEntryChanged, weld::TextView&, void); }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/uiconfig/scalc/ui/pivotcalcfielddialog.ui b/sc/uiconfig/scalc/ui/pivotcalcfielddialog.ui index 9d5b304a4bf2..59964b153e2d 100644 --- a/sc/uiconfig/scalc/ui/pivotcalcfielddialog.ui +++ b/sc/uiconfig/scalc/ui/pivotcalcfielddialog.ui @@ -130,6 +130,7 @@ True False + start Formula: True calcentry @@ -141,10 +142,26 @@ - + True True True + always + in + + + True + True + True + word + False + + + Enter the formula for the calculated field. + + + + 1 @@ -155,6 +172,7 @@ True False + True True