sc/source/ui/app/inputwin.cxx | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-)
New commits: commit ff1d1ea1f5f15ce7888957d09f4783d8055c7654 Author: Tsutomu Uchino <[email protected]> Date: Fri Jan 10 11:47:19 2014 +0000 #i42309# change behavior for equal button of input line according to the current content of the cell diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx index cbc7d43..3351f92 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); _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
