I may be reading wrongly the code, but but seems to me that rowbreakpoint
sets row.endpos() to a value larger by 1 than it should.
I.e. (text.C:LyXText::rowBreakPoint)
if (width < 0) {
row.endpos(pit->size() + 1);
return;
}
or below
pos_type const last = pit->size();
pos_type point = last;
if (pos == last) {
row.endpos(last + 1);
return;
}
There's more evidence that this was on purpose (lyxrow_funcs.C):
pos_type lastPos(Paragraph const & par, Row const & row)
{
if (par.empty())
return 0;
pos_type pos = row.endpos() - 1;
if (pos == par.size())
--pos;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this shouldn't be here
return pos;
}
I don't understand what's happening. Shouldn't row.endpos() be par->size()
if the par is small enough? Someone can explain to the thicko here?
Alfredo