X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FRowPainter.cpp;h=8c62926889000c68a6262d724a9c30e8752920f2;hb=08afc52c4cc5fe8740722d7715fd66baa3dd9ffa;hp=81b58a869196347de68131440b010de0efeac193;hpb=8b89709fc9e128f85757642db3bfe1ec3145e9c8;p=lyx.git diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp index 81b58a8691..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); @@ -357,7 +355,7 @@ void RowPainter::paintDepthBar() const } -int RowPainter::paintAppendixStart(int y) const +void RowPainter::paintAppendixStart(int y) const { FontInfo pb_font = sane_font; pb_font.setColor(Color_appendix); @@ -377,8 +375,6 @@ int RowPainter::paintAppendixStart(int y) const pi_.pain.line(int(xo_ + 1), y, text_start, y, Color_appendix); pi_.pain.line(text_end, y, int(xo_ + width_ - 2), y, Color_appendix); - - return 3 * defaultRowHeight(); } @@ -401,40 +397,21 @@ void RowPainter::paintTooLargeMarks(bool const left, bool const right) const void RowPainter::paintFirst() const { - BufferParams const & bparams = pi_.base.bv->buffer().params(); Layout const & layout = par_.layout(); - int y_top = 0; - // start of appendix? if (par_.params().startOfAppendix()) - y_top += paintAppendixStart(yo_ - row_.ascent() + 2 * defaultRowHeight()); - - if (bparams.paragraph_separation == BufferParams::ParagraphSkipSeparation - && pit_ != 0) { - if (layout.latextype == LATEX_PARAGRAPH - && !par_.getDepth()) { - y_top += bparams.getDefSkip().inPixels(*pi_.base.bv); - } else { - Layout const & playout = pars_[pit_ - 1].layout(); - if (playout.latextype == LATEX_PARAGRAPH - && !pars_[pit_ - 1].getDepth()) { - // is it right to use defskip here, too? (AS) - y_top += bparams.getDefSkip().inPixels(*pi_.base.bv); - } - } - } + paintAppendixStart(yo_ - row_.ascent() + 2 * defaultRowHeight()); bool const is_first = text_.isFirstInSequence(pit_) || !layout.isParagraphGroup(); //lyxerr << "paintFirst: " << par_.id() << " is_seq: " << is_seq << endl; if (layout.labelIsInline() - && (layout.labeltype != LABEL_STATIC || is_first)) { + && (layout.labeltype != LABEL_STATIC || is_first)) paintLabel(); - } else if (is_first && layout.labelIsAbove()) { + else if (is_first && layout.labelIsAbove()) paintTopLevelLabel(); - } } @@ -632,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: {