diff options
author | Justin Luth <justin_luth@sil.org> | 2015-06-30 15:55:46 +0300 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-06-30 14:37:08 +0000 |
commit | 227e7f903fee64d63b48bd31707887ba28a019bc (patch) | |
tree | 03db0a4d6e8894d1414b954b12ab99f03ef6930f /sc | |
parent | 59487150df556457cb3c919b0b0ea5d6b625b185 (diff) |
tdf#91641 adjust cursor when deleting preceding characters
IMDeleteSurrounding is used by input methods to take multiple
keystrokes and convert them into a special character. Then the
composing keystrokes are removed.
Before this fix, the cursor placement was not adjusted,
so the special character was inserted in the wrong position
and if 3+ keystrokes were involved, the wrong characters were deleted.
Also fixes "editLine should have focus on accessibleText init."
The first time an accessibleEdit is created, it didnt recognize any
focused text when editing in the "Input Line".
Change-Id: I5be9b75f74d4df82fbd57da3817a626b5fcbeba1
Reviewed-on: https://gerrit.libreoffice.org/15961
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-on: https://gerrit.libreoffice.org/16619
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/Accessibility/AccessibleEditObject.cxx | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/sc/source/ui/Accessibility/AccessibleEditObject.cxx b/sc/source/ui/Accessibility/AccessibleEditObject.cxx index e975bd527912..c68816548c6f 100644 --- a/sc/source/ui/Accessibility/AccessibleEditObject.cxx +++ b/sc/source/ui/Accessibility/AccessibleEditObject.cxx @@ -372,13 +372,21 @@ void ScAccessibleEditObject::CreateTextHelper() ::std::unique_ptr< SvxEditSource > pEditSource (new ScAccessibilityEditSource(std::move(pAccessibleTextData))); mpTextHelper = new ::accessibility::AccessibleTextHelper(std::move(pEditSource)); mpTextHelper->SetEventSource(this); - mpTextHelper->SetFocus(mbHasFocus); + + const ScInputHandler* pInputHdl = SC_MOD()->GetInputHdl(); + if ( pInputHdl && pInputHdl->IsEditMode() ) + { + mpTextHelper->SetFocus(true); + } + else + { + mpTextHelper->SetFocus(mbHasFocus); + } // #i54814# activate cell in edit mode if( meObjectType == CellInEditMode ) { // do not activate cell object, if top edit line is active - const ScInputHandler* pInputHdl = SC_MOD()->GetInputHdl(); if( pInputHdl && !pInputHdl->IsTopMode() ) { SdrHint aHint( HINT_BEGEDIT ); |