[Libreoffice-commits] core.git: sc/source

Tsutomu Uchino hanya at apache.org
Sat Jan 11 07:04:49 PST 2014


 sc/source/ui/app/inputwin.cxx |   36 ++++++++++++++++++++++++++++++++++--
 1 file changed, 34 insertions(+), 2 deletions(-)

New commits:
commit 10e3880eb10d8e5c08bd7a254577ba4b0bd25534
Author: Tsutomu Uchino <hanya at apache.org>
Date:   Fri Jan 10 11:47:19 2014 +0000

    Resolves: #i42309# change behavior for equal button of input line...
    
    according to the current content of the cell
    
    (cherry picked from commit ff1d1ea1f5f15ce7888957d09f4783d8055c7654)
    
    Conflicts:
    	sc/source/ui/app/inputwin.cxx
    
    Change-Id: I054aa55de14e2dec5a9ace1124d7eb6aa261162f

diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx
index 0407276..5f7b032 100644
--- a/sc/source/ui/app/inputwin.cxx
+++ b/sc/source/ui/app/inputwin.cxx
@@ -510,12 +510,44 @@ void ScInputWindow::Select()
             if ( pScMod->IsEditMode() )         // nicht, wenn z.B. geschuetzt
             {
                 aTextWindow.StartEditEngine();
-                aTextWindow.SetTextString(OUString('='));
+
+                sal_Int32 nStartPos = 1;
+                sal_Int32 nEndPos = 1;
+
+                ScTabViewShell* pViewSh = PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
+                if ( pViewSh )
+                {
+                    const OUString& rString = aTextWindow.GetTextString();
+                    const sal_Int32 nLen = rString.getLength();
+
+                    ScDocument* pDoc = pViewSh->GetViewData()->GetDocument();
+                    CellType eCellType = pDoc->GetCellType( pViewSh->GetViewData()->GetCurPos() );
+                    switch ( eCellType )
+                    {
+                        case CELLTYPE_VALUE:
+                        {
+                            nEndPos = nLen + 1;
+                            aTextWindow.SetTextString("=" +  rString);
+                            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);


More information about the Libreoffice-commits mailing list