summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2018-04-16 14:25:16 +0100
committerMike Kaganski <mike.kaganski@collabora.com>2018-04-17 13:35:19 +0200
commitf7de9473b2fddd84d03fb521709d805486292800 (patch)
treebee5dc54773cdd9ea36b664a173d4a6d8bea8c47
parentofz#7729 Null-dereference READ (diff)
downloadcore-f7de9473b2fddd84d03fb521709d805486292800.tar.gz
core-f7de9473b2fddd84d03fb521709d805486292800.zip
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>
-rw-r--r--cui/source/dialogs/SpellDialog.cxx21
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;