diff options
author | Tsutomu Uchino <hanya@apache.org> | 2014-01-10 11:47:19 +0000 |
---|---|---|
committer | Tsutomu Uchino <hanya@apache.org> | 2014-01-10 11:47:19 +0000 |
commit | ff1d1ea1f5f15ce7888957d09f4783d8055c7654 (patch) | |
tree | 992b85b8ab591b610ff7119bd7e4603dd4c60dc1 /sc | |
parent | 3da7c8da81d5fd05ced97b965d127cab1694bfd4 (diff) |
#i42309# change behavior for equal button of input line according to the current content of the cell
Notes
Notes:
merged as: 10e3880eb10d8e5c08bd7a254577ba4b0bd25534
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/app/inputwin.cxx | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx index cbc7d439979c..3351f9244b30 100644 --- a/sc/source/ui/app/inputwin.cxx +++ b/sc/source/ui/app/inputwin.cxx @@ -461,12 +461,46 @@ void __EXPORT ScInputWindow::Select() if ( pScMod->IsEditMode() ) // nicht, wenn z.B. geschuetzt { aTextWindow.GrabFocus(); - aTextWindow.SetTextString( '=' ); + + xub_StrLen nStartPos = 1; + xub_StrLen nEndPos = 1; + + ScTabViewShell* pViewSh = PTR_CAST( ScTabViewShell, SfxViewShell::Current() ); + if ( pViewSh ) + { + const String& aString = aTextWindow.GetTextString(); + const xub_StrLen nLen = aString.Len(); + + ScDocument* pDoc = pViewSh->GetViewData()->GetDocument(); + CellType eCellType = pDoc->GetCellType( pViewSh->GetViewData()->GetCurPos() ); + switch ( eCellType ) + { + case CELLTYPE_VALUE: + { + nEndPos = nLen +1; + String aNewStr( '=' ); + aNewStr.Append( aString ); + aTextWindow.SetTextString( aNewStr ); + break; + } + case CELLTYPE_STRING: + case CELLTYPE_EDIT: + nStartPos = 0; + nEndPos = nLen; + break; + case CELLTYPE_FORMULA: + nEndPos = nLen; + break; + default: + aTextWindow.SetTextString( '=' ); + break; + } + } EditView* pView = aTextWindow.GetEditView(); if (pView) { - pView->SetSelection( ESelection(0,1, 0,1) ); + pView->SetSelection( ESelection(0, nStartPos, 0, nEndPos) ); pScMod->InputChanged(pView); SetOkCancelMode(); pView->SetEditEngineUpdateMode(sal_True); |