diff options
author | Winfried Donkers <winfrieddonkers@libreoffice.org> | 2014-11-12 11:18:35 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-12-02 14:04:03 +0000 |
commit | 7a93554500f82adec8f89fd4a137af07ec502013 (patch) | |
tree | e36e0fc84c28e2204e73601bfac35834f8fd5564 | |
parent | 0ae280d747e3e35efd16e06abbcfa7ccd4690e1c (diff) |
fdo#86169 fix completion of function name crash
function names with dot or underscore were not completed
correctly, leading to incorrect results or even crashes
Change-Id: Iacb6af29c609ab39746185c71d4443537bf46b5e
Reviewed-on: https://gerrit.libreoffice.org/12380
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Eike Rathke <erack@redhat.com>
(cherry picked from commit 5456abc4d734583664a55c01a0e750e3051b03c9)
Signed-off-by: Eike Rathke <erack@redhat.com>
(cherry picked from commit d4aa91aa4cf7a01915cb9a2b1e4d52e20bf7454b)
Reviewed-on: https://gerrit.libreoffice.org/13155
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | sc/source/ui/app/inputhdl.cxx | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx index aa1c955fbede..961cbcdf4d61 100644 --- a/sc/source/ui/app/inputhdl.cxx +++ b/sc/source/ui/app/inputhdl.cxx @@ -1149,16 +1149,23 @@ void completeFunction( EditView* pView, const OUString& rInsert, bool& rParInser aSel = pView->GetSelection(); ESelection aOldSelection = aSel; OUString aSelectedText = pView->GetSelected(); - while(needToExtendSelection(aSelectedText, rInsert)) + if ( needToExtendSelection( aSelectedText, rInsert ) ) { - assert(aSel.nStartPos > 0); - --aSel.nStartPos; - --aSel.nEndPos = aSel.nStartPos; - pView->SetSelection(aSel); - pView->SelectCurrentWord(); - aSelectedText = pView->GetSelected(); + while(needToExtendSelection(aSelectedText, rInsert)) + { + assert(aSel.nStartPos > 0); + --aSel.nStartPos; + aSel.nEndPos = aSel.nStartPos; + pView->SetSelection(aSel); + pView->SelectCurrentWord(); + aSelectedText = pView->GetSelected(); + } + aSel.nStartPos = aSel.nEndPos - ( aSelectedText.getLength() - 1 ); + } + else + { + aSel.nStartPos = aSel.nEndPos - aSelectedText.getLength(); } - aSel.nStartPos -= ( aSelectedText.getLength() - 1 ); aSel.nEndPos = aOldSelection.nEndPos; pView->SetSelection(aSel); } |