void FontList::setMisspelled(pos_type startpos, pos_type endpos,
bool misspelled)
{
- if (list_.empty())
+ List::iterator start = fontIterator(startpos);
+ if (misspelled && start->font().isMisspelled())
+ return;
+ if (!misspelled && !start->font().isMisspelled())
return;
- List::iterator end_it = fontIterator(endpos);
- List::iterator const end = list_.end();
- if (end_it != end)
- ++end_it;
-
- List::iterator cit = fontIterator(startpos);
- for (; cit != end_it; ++cit)
- cit->font_.setMisspelled(misspelled);
+ Font f = start->font();
+ f.setMisspelled(misspelled);
+ setRange(startpos, endpos, f);
}