X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FRowPainter.cpp;h=c8b9157f3c52dcb17389e98e10b861e4d39a78bd;hb=0762b52334d8a455a8c2ed08f5cc6ce6d67a35d9;hp=16ff19519659766b4de3ba2c4c53a6f3ab6c5b9a;hpb=0ef2c192c02dfb4578c189e68a0951280ebeea47;p=lyx.git diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp index 16ff195196..c8b9157f3c 100644 --- a/src/RowPainter.cpp +++ b/src/RowPainter.cpp @@ -169,10 +169,13 @@ void RowPainter::paintNoSpellingMark(Row::Element const & e) const // We at the same voffset than the misspelled mark, since // these two are mutually exclusive int const desc = e.inset ? e.dim.descent() : 0; - int const y = yo_ + pi_.base.solidLineOffset() + desc + int y = yo_ + pi_.base.solidLineOffset() + desc + pi_.base.solidLineThickness() + (e.change.changed() ? pi_.base.solidLineThickness() + 1 : 0) + 1; + // Make sure that the mark does not go below the row rectangle + y = min(y, yo_ + row_.descent() - 1); + pi_.pain.line(int(x_), y, int(x_ + e.full_width()), y, Color_language, Painter::line_onoffdash, pi_.base.solidLineThickness()); } @@ -186,9 +189,11 @@ void RowPainter::paintMisspelledMark(Row::Element const & e) const // 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_ + pi_.base.solidLineOffset() + pi_.base.solidLineThickness() + int y = yo_ + pi_.base.solidLineOffset() + pi_.base.solidLineThickness() + (e.change.changed() ? pi_.base.solidLineThickness() + 1 : 0) + 1 + thickness / 2; + // Make sure that the mark does not go below the row rectangle + y = min(y, yo_ + row_.descent() - 1); //FIXME: this could be computed only once, it is probably not costly. // check for cursor position @@ -453,8 +458,16 @@ void RowPainter::paintTopLevelLabel() const double x = x_; if (layout.labeltype == LABEL_CENTERED) { - x += (tm_.width() - row_.left_margin - row_.right_margin) / 2; - x -= fm.width(str) / 2; + /* Currently, x points at row_.left_margin (which contains the + * indent). First remove that, and then center the title with + * respect to the left and right margins. + */ + int const leftm = row_.isRTL() ? tm_.rightMargin(row_.pit()) + : tm_.leftMargin(row_.pit()); + int const rightm = row_.isRTL() ? tm_.leftMargin(row_.pit()) + : tm_.rightMargin(row_.pit()); + x += leftm - row_.left_margin + (tm_.width() - leftm -rightm) / 2 + - fm.width(str) / 2; } else if (row_.isRTL()) { x = xo_ + tm_.width() - row_.right_margin - fm.width(str); }