#include "insets/InsetText.h"
+#include "mathed/InsetMath.h"
+
#include "support/debug.h"
#include "support/gettext.h"
#include "support/textutils.h"
lang == "farsi";
// spelling correct?
- bool const misspelled_ =
+ bool const misspelled =
lyxrc.spellcheck_continuously && par_.isMisspelled(pos);
// draw as many chars as we can
paintForeignMark(orig_x, orig_font.language());
- if (lyxrc.spellcheck_continuously && misspelled_) {
- paintMisspelledMark(orig_x, changed);
+ if (lyxrc.spellcheck_continuously && misspelled) {
+ // check for cursor position
+ // don't draw misspelled marker for words at cursor position
+ // we don't want to disturb the process of text editing
+ BufferView const * bv = pi_.base.bv;
+ DocIterator const nw = bv->cursor().newWord();
+ bool new_word = false;
+ if (!nw.empty() && par_.id() == nw.paragraph().id()) {
+ pos_type cpos = nw.pos();
+ if (cpos > 0 && cpos == par_.size() && !par_.isWordSeparator(cpos-1))
+ --cpos;
+ else if (cpos > 0 && par_.isWordSeparator(cpos))
+ --cpos;
+ new_word = par_.isSameSpellRange(pos, cpos) ;
+ }
+ if (!new_word)
+ paintMisspelledMark(orig_x, changed);
}
}
for (pos_type pos = row_.pos(); pos != end; ++pos) {
// If outer row has changed, nested insets are repaint completely.
Inset const * inset = par_.getInset(pos);
- bool const nested_inset = inset && (inset->inMathed() ||
- inset->asInsetText() ||
- inset->asInsetTabular());
+ bool const nested_inset = inset &&
+ ((inset->asInsetMath() &&
+ !inset->asInsetMath()->asMacroTemplate())
+ || inset->asInsetText()
+ || inset->asInsetTabular());
if (!nested_inset)
continue;
if (x_ > pi_.base.bv->workWidth()