summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorMatt K <mattkse@gmail.com>2023-07-13 18:12:16 -0500
committerMike Kaganski <mike.kaganski@collabora.com>2023-07-14 06:40:06 +0200
commitb247630d8b5e81041e0ed515572dfede49ccdf46 (patch)
tree8edbd1298b67727ac488a4097604b13786388d68 /sc
parent73367f09716f5709264885486a2bb03626d39884 (diff)
tdf#150262 Split Autosum button and default to sum on click
This change follows with comments in the bug report by changing the Button Type to dropdown and adding back the code to do the autosum on default click of the sigma button. Change-Id: Ibe7afa1c7b8346b6a6de5d1db8223dab17ee720a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154405 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/app/inputwin.cxx39
1 files changed, 38 insertions, 1 deletions
diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx
index 005b29e3b573..2c46b93db54d 100644
--- a/sc/source/ui/app/inputwin.cxx
+++ b/sc/source/ui/app/inputwin.cxx
@@ -197,7 +197,7 @@ ScInputWindow::ScInputWindow( vcl::Window* pParent, const SfxBindings* pBind ) :
// sigma and equal buttons
if (!bIsLOKMobilePhone)
{
- InsertItem (SID_INPUT_SUM, Image(StockImage::Yes, RID_BMP_INPUT_SUM), ToolBoxItemBits::DROPDOWNONLY, 3);
+ InsertItem (SID_INPUT_SUM, Image(StockImage::Yes, RID_BMP_INPUT_SUM), ToolBoxItemBits::DROPDOWN, 3);
InsertItem (SID_INPUT_EQUAL, Image(StockImage::Yes, RID_BMP_INPUT_EQUAL), ToolBoxItemBits::NONE, 4);
InsertItem (SID_INPUT_CANCEL, Image(StockImage::Yes, RID_BMP_INPUT_CANCEL), ToolBoxItemBits::NONE, 5);
InsertItem (SID_INPUT_OK, Image(StockImage::Yes, RID_BMP_INPUT_OK), ToolBoxItemBits::NONE, 6);
@@ -366,6 +366,43 @@ void ScInputWindow::Select()
SetSumAssignMode();
mxTextWindow->Invalidate(); // Or else the Selection remains
}
+ else if (curItemId == SID_INPUT_SUM)
+ {
+ ScTabViewShell* pViewSh = dynamic_cast<ScTabViewShell*>(SfxViewShell::Current());
+ if (pViewSh)
+ {
+ bool bSubTotal = false;
+ bool bRangeFinder = false;
+ const OUString aFormula = pViewSh->DoAutoSum(bRangeFinder, bSubTotal, ocSum);
+ if (!aFormula.isEmpty())
+ {
+ SetFuncString(aFormula);
+ if (bRangeFinder && pScMod->IsEditMode())
+ {
+ ScInputHandler* pHdl = pScMod->GetInputHdl(pViewSh);
+ if (pHdl)
+ {
+ pHdl->InitRangeFinder(aFormula);
+
+ //! SetSelection at the InputHandler?
+ //! Set bSelIsRef?
+ const sal_Int32 nOpen = aFormula.indexOf('(');
+ const sal_Int32 nLen = aFormula.getLength();
+ if (nOpen != -1 && nLen > nOpen)
+ {
+ ESelection aSel(0, nOpen + (bSubTotal ? 3 : 1), 0, nLen - 1);
+ EditView* pTableView = pHdl->GetTableView();
+ if (pTableView)
+ pTableView->SetSelection(aSel);
+ EditView* pTopView = pHdl->GetTopView();
+ if (pTopView)
+ pTopView->SetSelection(aSel);
+ }
+ }
+ }
+ }
+ }
+ }
else if (curItemId == SID_INPUT_EQUAL)
{
StartFormula();