diff options
author | Matt K <mattkse@gmail.com> | 2023-07-13 18:12:16 -0500 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2023-07-14 06:40:06 +0200 |
commit | b247630d8b5e81041e0ed515572dfede49ccdf46 (patch) | |
tree | 8edbd1298b67727ac488a4097604b13786388d68 /sc | |
parent | 73367f09716f5709264885486a2bb03626d39884 (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.cxx | 39 |
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(); |