X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FRowPainter.cpp;h=8c62926889000c68a6262d724a9c30e8752920f2;hb=08afc52c4cc5fe8740722d7715fd66baa3dd9ffa;hp=3466a041b7bd78d7566e8b13a8e1b5d9101e8492;hpb=44acd4a3cbeb32164d9b4cba637975d08ebbef1b;p=lyx.git diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp index 3466a041b7..8c62926889 100644 --- a/src/RowPainter.cpp +++ b/src/RowPainter.cpp @@ -62,7 +62,7 @@ RowPainter::RowPainter(PainterInfo & pi, pm_(text_metrics_.parMetrics(pit)), change_(pi_.change_), xo_(x), yo_(y), width_(text_metrics_.width()), solid_line_thickness_(1), solid_line_offset_(1), - dotted_line_thickness_(1), dotted_line_offset_(2) + dotted_line_thickness_(1) { if (lyxrc.zoom >= 200) { // derive the line thickness from zoom factor @@ -77,8 +77,6 @@ RowPainter::RowPainter(PainterInfo & pi, // the zoom is given in percent // (increase thickness at 150%, 250% etc.) dotted_line_thickness_ = (lyxrc.zoom + 50) / 100; - // adjust line_offset_ too - dotted_line_offset_ = 1 + dotted_line_thickness_ / 2; } x_ = row_.left_margin + xo_; @@ -139,7 +137,7 @@ void RowPainter::paintInset(Inset const * inset, Font const & font, inset->drawSelection(pi_, x1, yo_); inset->draw(pi_, x1, yo_); - Dimension const & dim = pm_.insetDimension(inset); + Dimension const & dim = pi_.base.bv->coordCache().insets().dim(inset); paintForeignMark(x_, font.language(), dim.descent()); @@ -183,9 +181,11 @@ void RowPainter::paintMisspelledMark(double const orig_x, { // if changed the misspelled marker gets placed slightly lower than normal // to avoid drawing at the same vertical offset + FontMetrics const & fm = theFontMetrics(e.font); + int const thickness = max(fm.lineWidth(), 2); int const y = yo_ + solid_line_offset_ + solid_line_thickness_ + (e.change.changed() ? solid_line_thickness_ + 1 : 0) - + dotted_line_offset_; + + 1 + thickness / 2; //FIXME: this could be computed only once, it is probably not costly. // check for cursor position @@ -228,7 +228,7 @@ void RowPainter::paintMisspelledMark(double const orig_x, pi_.pain.line(int(orig_x) + x1, y, int(orig_x) + x2, y, Color_error, - Painter::line_onoffdash, dotted_line_thickness_); + Painter::line_onoffdash, thickness); pos = range.last + 1; } } @@ -243,13 +243,11 @@ void RowPainter::paintStringAndSel(Row::Element const & e) bool const all_sel = (e.pos >= row_.sel_beg && e.endpos < row_.sel_end) || pi_.selected; - if (all_sel) { - Font copy = e.font; - copy.fontInfo().setPaintColor(Color_selectiontext); - pi_.pain.text(int(x_), yo_, e.str, copy, e.extra); - } else if (e.change.changed()) { + if (all_sel || e.change.changed()) { Font copy = e.font; - copy.fontInfo().setPaintColor(e.change.color()); + Color const col = e.change.changed() ? e.change.color() + : Color_selectiontext; + copy.fontInfo().setPaintColor(col); pi_.pain.text(int(x_), yo_, e.str, copy, e.extra); } else if (!some_sel) { pi_.pain.text(int(x_), yo_, e.str, e.font, e.extra); @@ -611,7 +609,7 @@ void RowPainter::paintText() paintStringAndSel(e); // Paint the spelling marks if enabled. - if (lyxrc.spellcheck_continuously && pi_.do_spellcheck) + if (lyxrc.spellcheck_continuously && pi_.do_spellcheck && pi_.pain.isDrawingEnabled()) paintMisspelledMark(orig_x, e); break; case Row::INSET: {