if (row_index || end < par.size())
// If there is more than one row, expand the text to
// the full allowable width. This setting here is needed
- // for the computeRowMetrics below().
+ // for the computeRowMetrics() below.
dim_.wid = max_width_;
dim.wid = rowWidth(right_margin, pit, first, end);
else
row.setSelection(-1, -1);
row.setDimension(dim);
- computeRowMetrics(pit, row);
+ int const max_row_width = max(dim_.wid, dim.wid);
+ computeRowMetrics(pit, row, max_row_width);
pm.computeRowSignature(row, bparams);
first = end;
++row_index;
row.pos(first);
row.endpos(first);
row.setDimension(dim);
- computeRowMetrics(pit, row);
+ int const max_row_width = max(dim_.wid, dim.wid);
+ computeRowMetrics(pit, row, max_row_width);
pm.computeRowSignature(row, bparams);
pm.dim().des += dim.height();
}
void TextMetrics::computeRowMetrics(pit_type const pit,
- Row & row) const
+ Row & row, int width) const
{
row.label_hfill = 0;
Buffer & buffer = bv_->buffer();
Paragraph const & par = text_->getPar(pit);
- double w = dim_.wid - row.width();
+ double w = width - row.width();
// FIXME: put back this assertion when the crash on new doc is solved.
//BOOST_ASSERT(w >= 0);
<< " yo: " << p.y_ - dim.asc << "..." << p.y_ + dim.des
<< endl;
- if (x >= p.x_ && p.x_ + dim.wid
+ if (x >= p.x_
+ && x <= p.x_ + dim.wid
&& y >= p.y_ - dim.asc
&& y <= p.y_ + dim.des) {
LYXERR(Debug::DEBUG)