summaryrefslogtreecommitdiff
path: root/linguistic/source/spelldsp.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'linguistic/source/spelldsp.cxx')
-rw-r--r--linguistic/source/spelldsp.cxx44
1 files changed, 42 insertions, 2 deletions
diff --git a/linguistic/source/spelldsp.cxx b/linguistic/source/spelldsp.cxx
index 15ecfeff7999..3a2f025e8512 100644
--- a/linguistic/source/spelldsp.cxx
+++ b/linguistic/source/spelldsp.cxx
@@ -649,7 +649,7 @@ Reference< XSpellAlternatives > SpellCheckerDispatcher::spell_Impl(
Reference< XDictionaryEntry > xTmp( lcl_GetRulingDictionaryEntry( aChkWord, nLanguage ) );
if (xTmp.is())
{
- if (xTmp->isNegative()) // positive entry found
+ if (xTmp->isNegative()) // negative entry found
{
eFailureType = SpellFailure::IS_NEGATIVE_WORD;
@@ -669,6 +669,46 @@ Reference< XSpellAlternatives > SpellCheckerDispatcher::spell_Impl(
eFailureType = -1; // no failure
}
}
+ else
+ {
+ setCharClass(LanguageTag(nLanguage));
+ sal_uInt16 ct = capitalType(aChkWord, pCharClass);
+ if (ct == CAPTYPE_INITCAP || ct == CAPTYPE_ALLCAP)
+ {
+ Reference< XDictionaryEntry > xTmp2( lcl_GetRulingDictionaryEntry( makeLowerCase(aChkWord, pCharClass), nLanguage ) );
+ if (xTmp2.is())
+ {
+ if (xTmp2->isNegative()) // negative entry found
+ {
+ eFailureType = SpellFailure::IS_NEGATIVE_WORD;
+
+ // replacement text to be added to suggestions, if not empty
+ OUString aAddRplcTxt( xTmp2->getReplacementText() );
+
+ // replacement text must not be in negative dictionary itself
+ if (!aAddRplcTxt.isEmpty() &&
+ !SearchDicList( xDList, aAddRplcTxt, nLanguage, false, true ).is())
+ {
+ switch ( ct )
+ {
+ case CAPTYPE_INITCAP:
+ aProposalList.Prepend( pCharClass->titlecase(aAddRplcTxt) );
+ break;
+ case CAPTYPE_ALLCAP:
+ aProposalList.Prepend( pCharClass->uppercase(aAddRplcTxt) );
+ default:
+ aProposalList.Prepend( aAddRplcTxt );
+ }
+ }
+ }
+ else // positive entry found
+ {
+ xRes = NULL;
+ eFailureType = -1; // no failure
+ }
+ }
+ }
+ }
}
if (eFailureType != -1) // word misspelled or found in negative user-dictionary
@@ -681,7 +721,7 @@ Reference< XSpellAlternatives > SpellCheckerDispatcher::spell_Impl(
Sequence< OUString > aProposals = aProposalList.GetSequence();
// remove entries listed in negative dictionaries
- // (we don't want to display suggestions that will be regarded as misspelledlater on)
+ // (we don't want to display suggestions that will be regarded as misspelled later on)
if (bCheckDics && xDList.is())
SeqRemoveNegEntries( aProposals, xDList, nLanguage );