// requires a full repaint
bool const pi_full_repaint = pi_.full_repaint;
bool const pi_do_spellcheck = pi_.do_spellcheck;
- Change const pi_change = pi_.change_;
+ Change const pi_change = pi_.change;
pi_.base.font = e.inset->inheritFont() ? e.font.fontInfo() :
pi_.base.bv->buffer().params().getFont().fontInfo();
pi_.ltr_pos = !e.font.isVisibleRightToLeft();
- pi_.change_ = pi_.change_.changed() ? pi_.change_ : e.change;
+ pi_.change = pi_.change.changed() ? pi_.change : e.change;
pi_.do_spellcheck &= e.inset->allowSpellCheck();
int const x1 = int(x_);
// Restore full_repaint status.
pi_.full_repaint = pi_full_repaint;
- pi_.change_ = pi_change;
+ pi_.change = pi_change;
pi_.do_spellcheck = pi_do_spellcheck;
pi_.selected = pi_selected;
// 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());
}
// 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
int x = 0;
if (row_.isRTL()) {
int const normal_x = nestMargin() + changebarMargin();
- x = min(normal_x, row_.left_margin - size - Inset::TEXT_TO_INSET_OFFSET);
+ x = min(normal_x, row_.left_margin - size - Inset::textOffset(pi_.base.bv));
} else {
int const normal_x = tm_.width() - row_.right_margin
- - size - Inset::TEXT_TO_INSET_OFFSET;
+ - size - Inset::textOffset(pi_.base.bv);
x = max(normal_x, row_.width());
}