]> git.lyx.org Git - lyx.git/blobdiff - src/rowpainter.cpp
GuiPainter.cpp: correct attempt from r35491
[lyx.git] / src / rowpainter.cpp
index cb48fb7f1a376ef85076ce207878412fda1836a9..c1faa9354aa5277db52490fd22ba0fdf49c5feba 100644 (file)
@@ -231,6 +231,10 @@ void RowPainter::paintChars(pos_type & vpos, FontInfo const & font,
        bool const selection = (pos >= row_.sel_beg && pos < row_.sel_end)
                || pi_.selected;
 
+       // spelling correct?
+       bool const spell_state =
+               lyxrc.spellcheck_continuously && par_.isMisspelled(pos);
+
        char_type prev_char = ' ';
        // collect as much similar chars as we can
        for (++vpos ; vpos < end ; ++vpos) {
@@ -243,6 +247,12 @@ void RowPainter::paintChars(pos_type & vpos, FontInfo const & font,
                        // Selection ends or starts here.
                        break;
 
+               bool const new_spell_state =
+                       lyxrc.spellcheck_continuously && par_.isMisspelled(pos);
+               if (new_spell_state != spell_state)
+                       // Spell checker state changed here.
+                       break;
+
                Change const & change = par_.lookupChange(pos);
                if (!change_running.isSimilarTo(change))
                        // Track change type or author has changed.
@@ -335,7 +345,7 @@ void RowPainter::paintForeignMark(double orig_x, Language const * lang,
 void RowPainter::paintMisspelledMark(double orig_x, int desc)
 {
        int const y = yo_ + desc;
-       pi_.pain.line(int(orig_x), y, int(x_), y, Color_red, Painter::line_onoffdash, 0.5);
+       pi_.pain.line(int(orig_x), y, int(x_), y, Color_red, Painter::line_onoffdash, 1.0);
 }
 
 
@@ -354,6 +364,10 @@ void RowPainter::paintFromPos(pos_type & vpos)
        bool const arabic = lang == "arabic_arabtex" || lang == "arabic_arabi" || 
                                                lang == "farsi";
 
+       // spelling correct?
+       bool const misspelled_ =
+               lyxrc.spellcheck_continuously && par_.isMisspelled(pos);
+       
        // draw as many chars as we can
        if ((!hebrew && !arabic)
                || (hebrew && !Encodings::isHebrewComposeChar(c))
@@ -367,8 +381,9 @@ void RowPainter::paintFromPos(pos_type & vpos)
 
        paintForeignMark(orig_x, orig_font.language());
 
-       if (lyxrc.spellcheck_continuously && orig_font.isMisspelled())
+       if (lyxrc.spellcheck_continuously && misspelled_) {
                paintMisspelledMark(orig_x, 2);
+       }
 }