summaryrefslogtreecommitdiff
path: root/editeng/source/misc/svxacorr.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'editeng/source/misc/svxacorr.cxx')
-rw-r--r--editeng/source/misc/svxacorr.cxx54
1 files changed, 39 insertions, 15 deletions
diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx
index 78edae142d..c083f02fab 100644
--- a/editeng/source/misc/svxacorr.cxx
+++ b/editeng/source/misc/svxacorr.cxx
@@ -1243,27 +1243,25 @@ ULONG SvxAutoCorrect::AutoCorrect( SvxAutoCorrDoc& rDoc, const String& rTxt,
else if ( bIsNextRun && !IsAutoCorrectChar( cChar ) )
{
// Remove the NBSP if it wasn't an autocorrection
- if ( NeedsHardspaceAutocorr( rTxt.GetChar( nInsPos - 1 ) ) &&
+ if ( nInsPos != 0 && NeedsHardspaceAutocorr( rTxt.GetChar( nInsPos - 1 ) ) &&
cChar != ' ' && cChar != '\t' && cChar != CHAR_HARDBLANK )
{
// Look for the last HARD_SPACE
xub_StrLen nPos = nInsPos - 1;
- bool bFound = false;
- while ( nPos != STRING_NOTFOUND && !bFound )
+ bool bContinue = true;
+ while ( bContinue )
{
- sal_Unicode cTmpChar = rTxt.GetChar( nPos );
+ const sal_Unicode cTmpChar = rTxt.GetChar( nPos );
if ( cTmpChar == CHAR_HARDBLANK )
- bFound = true;
- else if ( !NeedsHardspaceAutocorr( cTmpChar ) )
- nPos = STRING_NOTFOUND;
+ {
+ rDoc.Delete( nPos, nPos + 1 );
+ nRet = AddNonBrkSpace;
+ bContinue = false;
+ }
+ else if ( !NeedsHardspaceAutocorr( cTmpChar ) || nPos == 0 )
+ bContinue = false;
nPos--;
}
-
- if ( bFound && nPos != STRING_NOTFOUND )
- {
- rDoc.Delete( nPos + 1, nPos + 2 );
- nRet = AddNonBrkSpace;
- }
}
}
}
@@ -1389,6 +1387,32 @@ ULONG SvxAutoCorrect::AutoCorrect( SvxAutoCorrDoc& rDoc, const String& rTxt,
if( nRet )
{
+ const char* aHelpIds[] =
+ {
+ HID_AUTOCORR_HELP_WORD,
+ HID_AUTOCORR_HELP_SENT,
+ HID_AUTOCORR_HELP_SENTWORD,
+ HID_AUTOCORR_HELP_ACORWORD,
+ "",
+ HID_AUTOCORR_HELP_ACORSENTWORD,
+ "",
+ HID_AUTOCORR_HELP_CHGTOENEMDASH,
+ HID_AUTOCORR_HELP_WORDENEMDASH,
+ HID_AUTOCORR_HELP_SENTENEMDASH,
+ HID_AUTOCORR_HELP_SENTWORDENEMDASH,
+ HID_AUTOCORR_HELP_ACORWORDENEMDASH,
+ "",
+ HID_AUTOCORR_HELP_ACORSENTWORDENEMDASH,
+ "",
+ HID_AUTOCORR_HELP_CHGQUOTES,
+ HID_AUTOCORR_HELP_CHGSGLQUOTES,
+ HID_AUTOCORR_HELP_SETINETATTR,
+ HID_AUTOCORR_HELP_INGNOREDOUBLESPACE,
+ HID_AUTOCORR_HELP_CHGWEIGHTUNDERL,
+ HID_AUTOCORR_HELP_CHGFRACTIONSYMBOL,
+ HID_AUTOCORR_HELP_CHGORDINALNUMBER
+ };
+
ULONG nHelpId = 0;
if( nRet & ( Autocorrect|CptlSttSntnc|CptlSttWrd|ChgToEnEmDash ) )
{
@@ -1415,8 +1439,8 @@ ULONG SvxAutoCorrect::AutoCorrect( SvxAutoCorrDoc& rDoc, const String& rTxt,
if( nHelpId )
{
- nHelpId += HID_AUTOCORR_HELP_START - 1;
- Application::GetHelp()->OpenHelpAgent( nHelpId );
+ nHelpId -= 1;
+ Application::GetHelp()->OpenHelpAgent( aHelpIds[nHelpId] );
}
}