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
FontInfo copy = font;
if (change_running.changed())
- copy.setColor(change_running.color());
+ copy.setPaintColor(change_running.color());
else if (selection)
- copy.setColor(Color_selectiontext);
+ copy.setPaintColor(Color_selectiontext);
x_ += pi_.pain.text(int(x_), yo_, s, copy);
}
FontMetrics const & fm =
theFontMetrics(pi_.base.bv->buffer().params().getFont());
int const length = fm.maxAscent() / 2;
- ColorCode col = change.color();
+ Color col = change.color();
pi_.pain.line(int(x_) + 1, yo_ + 2, int(x_) + 1, yo_ + 2 - length, col,
Painter::line_solid, Painter::line_thick);
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();