summaryrefslogtreecommitdiff
path: root/lingucomponent
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2019-03-25 14:23:38 +0200
committerTor Lillqvist <tml@collabora.com>2019-03-25 14:34:35 +0200
commitf6cc8a7469bf62333ea4cbcee447c2ce2e54f879 (patch)
treef0b63862697468ff871f6d0451961bfbd66cdfd0 /lingucomponent
parent8e005a5677d5cfca18bb68d2a66fc269e5034d25 (diff)
tdf#124172: Use the MacOSXSpell library on iOS, too
The code needed just a small amount of ifdefs to use UITextChecker on iOS instead of NSSpellChecker. Change-Id: I19edfffd3cc317a79beacc0b94668a6fd5ea3b32
Diffstat (limited to 'lingucomponent')
-rw-r--r--lingucomponent/Module_lingucomponent.mk2
-rw-r--r--lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx11
-rw-r--r--lingucomponent/source/spellcheck/macosxspell/macspellimp.mm16
3 files changed, 25 insertions, 4 deletions
diff --git a/lingucomponent/Module_lingucomponent.mk b/lingucomponent/Module_lingucomponent.mk
index 92d582cc346a..5df75c87b1fd 100644
--- a/lingucomponent/Module_lingucomponent.mk
+++ b/lingucomponent/Module_lingucomponent.mk
@@ -14,7 +14,7 @@ $(eval $(call gb_Module_add_targets,lingucomponent,\
Library_guesslang \
Library_hyphen \
Library_lnth \
- $(if $(filter MACOSX,$(OS)),Library_MacOSXSpell) \
+ $(if $(filter IOS MACOSX,$(OS)),Library_MacOSXSpell) \
Library_spell \
StaticLibrary_ulingu \
))
diff --git a/lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx b/lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx
index e0c075ecbc72..cf0f49472ff0 100644
--- a/lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx
+++ b/lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx
@@ -22,12 +22,14 @@
#include <cppuhelper/implbase.hxx>
-#ifdef MACOSX
#include <premac.h>
+#ifdef MACOSX
#include <Carbon/Carbon.h>
#import <Cocoa/Cocoa.h>
-#include <postmac.h>
+#else
+#include <UIKit/UIKit.h>
#endif
+#include <postmac.h>
#include <com/sun/star/lang/XComponent.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/lang/XServiceDisplayName.hpp>
@@ -63,8 +65,11 @@ class MacSpellChecker :
Locale * aDLocs;
OUString * aDNames;
sal_Int32 numdict;
+#ifdef MACOSX
int macTag; // unique tag for this doc
-
+#else
+ UITextChecker * pChecker;
+#endif
::comphelper::OInterfaceContainerHelper2 aEvtListeners;
Reference< XPropertyChangeListener > xPropHelper;
linguistic::PropertyHelper_Spell * pPropHelper;
diff --git a/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm b/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm
index 0bbee2ec282d..bc542245ab6a 100644
--- a/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm
+++ b/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm
@@ -55,10 +55,14 @@ MacSpellChecker::MacSpellChecker() :
bDisposing = false;
pPropHelper = nullptr;
numdict = 0;
+#ifndef IOS
NSApplicationLoad();
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
macTag = [NSSpellChecker uniqueSpellDocumentTag];
[pool release];
+#else
+ pChecker = [[UITextChecker alloc] init];
+#endif
}
@@ -110,7 +114,11 @@ Sequence< Locale > SAL_CALL MacSpellChecker::getLocales()
// TODO How on Mac OS X?
// invoke a second dictionary manager to get the shared dictionary list
+#ifdef MACOSX
NSArray *aSpellCheckLanguages = [[NSSpellChecker sharedSpellChecker] availableLanguages];
+#else
+ NSArray *aSpellCheckLanguages = [UITextChecker availableLanguages];
+#endif
for (NSUInteger i = 0; i < [aSpellCheckLanguages count]; i++)
{
@@ -333,8 +341,12 @@ sal_Int16 MacSpellChecker::GetSpellFailure( const OUString &rWord, const Locale
aLang = [aLang stringByAppendingString:aTaggedCountry];
}
+#ifdef MACOSX
NSInteger aCount;
NSRange range = [[NSSpellChecker sharedSpellChecker] checkSpellingOfString:aNSStr startingAt:0 language:aLang wrap:false inSpellDocumentWithTag:macTag wordCount:&aCount];
+#else
+ NSRange range = [pChecker rangeOfMisspelledWordInString:aNSStr range:NSMakeRange(0, [aNSStr length]) startingAt:0 wrap:NO language:aLang];
+#endif
int rVal = 0;
if(range.length>0)
{
@@ -432,8 +444,12 @@ Reference< XSpellAlternatives >
NSString* aTaggedCountry = [@"_" stringByAppendingString:aCountry];
aLang = [aLang stringByAppendingString:aTaggedCountry];
}
+#ifdef MACOSX
[[NSSpellChecker sharedSpellChecker] setLanguage:aLang];
NSArray *guesses = [[NSSpellChecker sharedSpellChecker] guessesForWordRange:NSMakeRange(0, [aNSStr length]) inString:aNSStr language:aLang inSpellDocumentWithTag:0];
+#else
+ NSArray *guesses = [pChecker guessesForWordRange:NSMakeRange(0, [aNSStr length]) inString:aNSStr language:aLang];
+#endif
count = [guesses count];
if (count)
{