// requires a full repaint
bool pi_full_repaint = pi_.full_repaint;
- // FIXME: We should always use font, see documentation of
- // noFontChange() in Inset.h.
- pi_.base.font = inset->noFontChange() ?
- pi_.base.bv->buffer().params().getFont().fontInfo() :
- font.fontInfo();
+ pi_.base.font = inset->inheritFont() ? font.fontInfo() :
+ pi_.base.bv->buffer().params().getFont().fontInfo();
pi_.ltr_pos = (bidi_.level(pos) % 2 == 0);
pi_.change_ = change_.changed() ? change_ : par_.lookupChange(pos);
// Maybe a more general fix would be draw character by character
// for some predefined fonts on some platform. In arabic and
// Hebrew we already do paint this way.
- if (prev_char == 'f')
+ if (prev_char == 'f' || lyxrc.force_paint_single_char)
break;
-
+
pos = bidi_.vis2log(vpos);
if (pos < font_span.first || pos > font_span.last)
break;
{
// if changed the misspelled marker gets placed slightly lower than normal
// to avoid drawing at the same vertical offset
- int const y = yo_ + solid_line_offset_ + solid_line_thickness_
+ float const y = yo_ + solid_line_offset_ + solid_line_thickness_
+ (changed ? solid_line_thickness_ + 1 : 0)
+ dotted_line_offset_;
- pi_.pain.line(int(orig_x), y, int(x_), y, Color_error,
+ pi_.pain.line(int(orig_x), int(y), int(x_), int(y), Color_error,
Painter::line_onoffdash, dotted_line_thickness_);
}
// Calculate 1/3 height of the buffer's default font
FontMetrics const & fm
= theFontMetrics(pi_.base.bv->buffer().params().getFont());
- int const y_bar = change_running.deleted() ?
+ float const y_bar = change_running.deleted() ?
yo_ - fm.maxAscent() / 3 : yo_ + 2 * solid_line_offset_ + solid_line_thickness_;
- pi_.pain.line(change_last_x, y_bar, int(x_), y_bar,
+ pi_.pain.line(change_last_x, int(y_bar), int(x_), int(y_bar),
change_running.color(), Painter::line_solid, solid_line_thickness_);
// Change might continue with a different author or type
if (change_running.changed()) {
FontMetrics const & fm
= theFontMetrics(pi_.base.bv->buffer().params().getFont());
- int const y_bar = change_running.deleted() ?
+ float const y_bar = change_running.deleted() ?
yo_ - fm.maxAscent() / 3 : yo_ + 2 * solid_line_offset_ + solid_line_thickness_;
- pi_.pain.line(change_last_x, y_bar, int(x_), y_bar,
+ pi_.pain.line(change_last_x, int(y_bar), int(x_), int(y_bar),
change_running.color(), Painter::line_solid, solid_line_thickness_);
change_running.setUnchanged();
}