[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-4.3' - linguistic/source

Andras Timar andras.timar at collabora.com
Sun Nov 23 23:07:02 PST 2014


 linguistic/source/spelldsp.cxx |   44 +++++++++++++++++++++++++++++++++++++++--
 1 file changed, 42 insertions(+), 2 deletions(-)

New commits:
commit c10e801c4f73a6f7d77790fd7a6097bf7d753c6c
Author: Andras Timar <andras.timar at collabora.com>
Date:   Mon Nov 3 12:03:48 2014 +0100

    fdo#61167 suggest titlecase and uppercase words from exception dict
    
    Change-Id: I280ffed996814e246ac3e93de5ff0acaad84018c

diff --git a/linguistic/source/spelldsp.cxx b/linguistic/source/spelldsp.cxx
index 15ecfef..3a2f025 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 );
 


More information about the Libreoffice-commits mailing list