summaryrefslogtreecommitdiff
path: root/sc/source/ui/app/inputwin.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/ui/app/inputwin.cxx')
-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();