Kaydet (Commit) 86f876b4 authored tarafından Andras Timar's avatar Andras Timar

fdo#61167 suggest titlecase and uppercase words from exception dict

Change-Id: I280ffed996814e246ac3e93de5ff0acaad84018c
üst 4e87e0f2
...@@ -649,7 +649,7 @@ Reference< XSpellAlternatives > SpellCheckerDispatcher::spell_Impl( ...@@ -649,7 +649,7 @@ Reference< XSpellAlternatives > SpellCheckerDispatcher::spell_Impl(
Reference< XDictionaryEntry > xTmp( lcl_GetRulingDictionaryEntry( aChkWord, nLanguage ) ); Reference< XDictionaryEntry > xTmp( lcl_GetRulingDictionaryEntry( aChkWord, nLanguage ) );
if (xTmp.is()) if (xTmp.is())
{ {
if (xTmp->isNegative()) // positive entry found if (xTmp->isNegative()) // negative entry found
{ {
eFailureType = SpellFailure::IS_NEGATIVE_WORD; eFailureType = SpellFailure::IS_NEGATIVE_WORD;
...@@ -669,6 +669,46 @@ Reference< XSpellAlternatives > SpellCheckerDispatcher::spell_Impl( ...@@ -669,6 +669,46 @@ Reference< XSpellAlternatives > SpellCheckerDispatcher::spell_Impl(
eFailureType = -1; // no failure 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 if (eFailureType != -1) // word misspelled or found in negative user-dictionary
...@@ -681,7 +721,7 @@ Reference< XSpellAlternatives > SpellCheckerDispatcher::spell_Impl( ...@@ -681,7 +721,7 @@ Reference< XSpellAlternatives > SpellCheckerDispatcher::spell_Impl(
Sequence< OUString > aProposals = aProposalList.GetSequence(); Sequence< OUString > aProposals = aProposalList.GetSequence();
// remove entries listed in negative dictionaries // 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()) if (bCheckDics && xDList.is())
SeqRemoveNegEntries( aProposals, xDList, nLanguage ); SeqRemoveNegEntries( aProposals, xDList, nLanguage );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment