mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 21:21:32 +00:00
#8849 catch exception in enchant speller backend and avoid multiple speller lookups for missing dictionaries
This commit is contained in:
parent
10df612191
commit
b3b6fc643d
@ -69,22 +69,18 @@ EnchantChecker::Private::~Private()
|
|||||||
enchant::Dict * EnchantChecker::Private::addSpeller(string const & lang)
|
enchant::Dict * EnchantChecker::Private::addSpeller(string const & lang)
|
||||||
{
|
{
|
||||||
enchant::Broker * instance = enchant::Broker::instance();
|
enchant::Broker * instance = enchant::Broker::instance();
|
||||||
|
|
||||||
if (!instance->dict_exists(lang))
|
|
||||||
// FIXME error handling?
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
enchant::Dict * dict = instance->request_dict(lang);
|
|
||||||
|
|
||||||
if (dict) {
|
|
||||||
Speller m;
|
Speller m;
|
||||||
m.speller = dict;
|
|
||||||
|
try {
|
||||||
|
m.speller = instance->request_dict(lang);
|
||||||
|
}
|
||||||
|
catch (const enchant::Exception & e) {
|
||||||
|
// FIXME error handling?
|
||||||
|
m.speller = 0;
|
||||||
|
}
|
||||||
spellers_[lang] = m;
|
spellers_[lang] = m;
|
||||||
return m.speller;
|
return m.speller;
|
||||||
}
|
}
|
||||||
// FIXME error handling?
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
enchant::Dict * EnchantChecker::Private::speller(string const & lang)
|
enchant::Dict * EnchantChecker::Private::speller(string const & lang)
|
||||||
@ -135,9 +131,9 @@ void EnchantChecker::advanceChangeNumber()
|
|||||||
|
|
||||||
void EnchantChecker::insert(WordLangTuple const & word)
|
void EnchantChecker::insert(WordLangTuple const & word)
|
||||||
{
|
{
|
||||||
Spellers::iterator it = d->spellers_.find(word.lang()->code());
|
enchant::Dict * m = d->speller(word.lang()->code());
|
||||||
if (it != d->spellers_.end()) {
|
if (m) {
|
||||||
it->second.speller->add(to_utf8(word.word()));
|
m->add(to_utf8(word.word()));
|
||||||
advanceChangeNumber();
|
advanceChangeNumber();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -145,9 +141,9 @@ void EnchantChecker::insert(WordLangTuple const & word)
|
|||||||
|
|
||||||
void EnchantChecker::remove(WordLangTuple const & word)
|
void EnchantChecker::remove(WordLangTuple const & word)
|
||||||
{
|
{
|
||||||
Spellers::iterator it = d->spellers_.find(word.lang()->code());
|
enchant::Dict * m = d->speller(word.lang()->code());
|
||||||
if (it != d->spellers_.end()) {
|
if (m) {
|
||||||
it->second.speller->remove(to_utf8(word.word()));
|
m->remove(to_utf8(word.word()));
|
||||||
advanceChangeNumber();
|
advanceChangeNumber();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -155,9 +151,9 @@ void EnchantChecker::remove(WordLangTuple const & word)
|
|||||||
|
|
||||||
void EnchantChecker::accept(WordLangTuple const & word)
|
void EnchantChecker::accept(WordLangTuple const & word)
|
||||||
{
|
{
|
||||||
Spellers::iterator it = d->spellers_.find(word.lang()->code());
|
enchant::Dict * m = d->speller(word.lang()->code());
|
||||||
if (it != d->spellers_.end()) {
|
if (m) {
|
||||||
it->second.speller->add_to_session(to_utf8(word.word()));
|
m->add_to_session(to_utf8(word.word()));
|
||||||
advanceChangeNumber();
|
advanceChangeNumber();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user