diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2018-04-16 14:25:16 +0100 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2018-04-17 13:35:19 +0200 |
commit | f7de9473b2fddd84d03fb521709d805486292800 (patch) | |
tree | bee5dc54773cdd9ea36b664a173d4a6d8bea8c47 /cui/source | |
parent | a5cd6eb9efadc3d0ca2648acdc96e780bda8ad20 (diff) |
tdf#116725: justify selection to handle right-to-left selections
Change-Id: I6298a87170236059ff08a1f891ead21236be663a
Reviewed-on: https://gerrit.libreoffice.org/52979
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'cui/source')
-rw-r--r-- | cui/source/dialogs/SpellDialog.cxx | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/cui/source/dialogs/SpellDialog.cxx b/cui/source/dialogs/SpellDialog.cxx index 5e7537d9509c..e3242b486b30 100644 --- a/cui/source/dialogs/SpellDialog.cxx +++ b/cui/source/dialogs/SpellDialog.cxx @@ -1242,15 +1242,16 @@ bool SentenceEditWindow_Impl::PreNotify( NotifyEvent& rNEvt ) { TextEngine* pTextEngine = GetTextEngine(); TextView* pTextView = pTextEngine->GetActiveView(); - const TextSelection& rCurrentSelection = pTextView->GetSelection(); + TextSelection aCurrentSelection = pTextView->GetSelection(); + aCurrentSelection.Justify(); //determine if the selection contains a field bool bHasFieldLeft = false; bool bHasErrorLeft = false; - bool bHasRange = rCurrentSelection.HasRange(); + bool bHasRange = aCurrentSelection.HasRange(); sal_uInt8 nSelectionType = 0; // invalid type! - TextPaM aCursor(rCurrentSelection.GetStart()); + TextPaM aCursor(aCurrentSelection.GetStart()); const TextCharAttrib* pBackAttr = pTextEngine->FindCharAttrib( aCursor, TEXTATTR_SPELL_BACKGROUND ); const TextCharAttrib* pErrorAttr = pTextEngine->FindCharAttrib( aCursor, TEXTATTR_SPELL_ERROR ); const TextCharAttrib* pBackAttrLeft = nullptr; @@ -1261,21 +1262,21 @@ bool SentenceEditWindow_Impl::PreNotify( NotifyEvent& rNEvt ) if(bHasRange) { if(pBackAttr && - pBackAttr->GetStart() == rCurrentSelection.GetStart().GetIndex() && - pBackAttr->GetEnd() == rCurrentSelection.GetEnd().GetIndex()) + pBackAttr->GetStart() == aCurrentSelection.GetStart().GetIndex() && + pBackAttr->GetEnd() == aCurrentSelection.GetEnd().GetIndex()) { nSelectionType = FULL; } else if(pErrorAttr && - pErrorAttr->GetStart() <= rCurrentSelection.GetStart().GetIndex() && - pErrorAttr->GetEnd() >= rCurrentSelection.GetEnd().GetIndex()) + pErrorAttr->GetStart() <= aCurrentSelection.GetStart().GetIndex() && + pErrorAttr->GetEnd() >= aCurrentSelection.GetEnd().GetIndex()) { nSelectionType = INSIDE_YES; } else { nSelectionType = bHasField||bHasError ? BRACE : OUTSIDE_NO; - while(aCursor.GetIndex() < rCurrentSelection.GetEnd().GetIndex()) + while(aCursor.GetIndex() < aCurrentSelection.GetEnd().GetIndex()) { ++aCursor.GetIndex(); const TextCharAttrib* pIntBackAttr = pTextEngine->FindCharAttrib( aCursor, TEXTATTR_SPELL_BACKGROUND ); @@ -1296,8 +1297,8 @@ bool SentenceEditWindow_Impl::PreNotify( NotifyEvent& rNEvt ) const TextCharAttrib* pCurAttr = pBackAttr ? pBackAttr : pErrorAttr; if(pCurAttr) { - nSelectionType = pCurAttr->GetStart() == rCurrentSelection.GetStart().GetIndex() ? - LEFT_NO : pCurAttr->GetEnd() == rCurrentSelection.GetEnd().GetIndex() ? RIGHT_NO : INSIDE_NO; + nSelectionType = pCurAttr->GetStart() == aCurrentSelection.GetStart().GetIndex() ? + LEFT_NO : pCurAttr->GetEnd() == aCurrentSelection.GetEnd().GetIndex() ? RIGHT_NO : INSIDE_NO; } else nSelectionType = OUTSIDE_NO; |