pars_(text.paragraphs()),
row_(row), pit_(pit), par_(text.paragraphs()[pit]),
pm_(text_metrics_.parMetrics(pit)),
- bidi_(bidi), erased_(pi_.erased_),
+ bidi_(bidi), change_(pi_.change_),
xo_(x), yo_(y), width_(text_metrics_.width())
{
bidi_.computeTables(par_, pi_.base.bv->buffer(), row_);
pi_.base.bv->buffer().params().getFont().fontInfo() :
font.fontInfo();
pi_.ltr_pos = (bidi_.level(pos) % 2 == 0);
- pi_.erased_ = erased_ || par_.isDeleted(pos);
+ pi_.change_ = change_.changed() ? change_ : par_.lookupChange(pos);
+
int const x1 = int(x_);
pi_.base.bv->coordCache().insets().add(inset, x1, yo_);
// insets are painted completely. Recursive
}
+void RowPainter::paintMisspelledMark(double orig_x, int desc)
+{
+ int const y = yo_ + desc;
+ pi_.pain.wavyHorizontalLine(int(orig_x), y, int(x_) - int(orig_x), Color_red);
+}
+
+
void RowPainter::paintFromPos(pos_type & vpos)
{
pos_type const pos = bidi_.vis2log(vpos);
}
paintForeignMark(orig_x, orig_font.language());
+
+ if (orig_font.isMisspelled())
+ paintMisspelledMark(orig_x, 3);
}
void RowPainter::paintOnlyInsets()
{
+ CoordCache const & cache = pi_.base.bv->coordCache();
pos_type const end = row_.endpos();
for (pos_type pos = row_.pos(); pos != end; ++pos) {
// If outer row has changed, nested insets are repaint completely.
Inset const * inset = par_.getInset(pos);
if (!inset)
continue;
- if (x_ > pi_.base.bv->workWidth())
+ if (x_ > pi_.base.bv->workWidth()
+ || !cache.getInsets().has(inset))
continue;
- x_ = pi_.base.bv->coordCache().getInsets().x(inset);
+ x_ = cache.getInsets().x(inset);
bool const pi_selected = pi_.selected;
Cursor const & cur = pi_.base.bv->cursor();