}
-docstring InsetMathGrid::eolString(row_type row, bool fragile) const
+docstring InsetMathGrid::eolString(row_type row, bool fragile,
+ bool /*latex*/, bool last_eoln) const
{
docstring eol;
}
// only add \\ if necessary
- if (eol.empty() && row + 1 == nrows())
+ if (eol.empty() && row + 1 == nrows() && (nrows() == 1 || !last_eoln))
return docstring();
return (fragile ? "\\protect\\\\" : "\\\\") + eol;
// unless there are vertical lines
col_type lastcol = 0;
bool emptyline = true;
- for (col_type col = beg_col; col < end_col; ++col)
- if (!cell(index(row, col)).empty()
- || colinfo_[col + 1].lines_) {
+ bool last_eoln = true;
+ for (col_type col = beg_col; col < end_col; ++col) {
+ bool const empty_cell = cell(index(row, col)).empty();
+ if (!empty_cell)
+ last_eoln = false;
+ if (!empty_cell || colinfo_[col + 1].lines_) {
lastcol = col + 1;
emptyline = false;
}
+ }
for (col_type col = beg_col; col < lastcol; ++col) {
os << cell(index(row, col));
if (os.pendingBrace())
ModeSpecifier specifier(os, TEXT_MODE);
os << eocString(col, lastcol);
}
- eol = eolString(row, os.fragile());
+ eol = eolString(row, os.fragile(), os.latex(), last_eoln);
os << eol;
// append newline only if line wasn't completely empty
// and the formula is not written on a single line
cell(i).append(grid.cell(grid.index(r, c)));
}
cur.clearSelection(); // bug 393
- // FIXME audit setBuffer/updateBuffer calls
+ // FIXME audit setBuffer calls
cur.inset().setBuffer(*buffer_);
- // FIXME audit setBuffer/updateBuffer calls
- cur.buffer()->updateBuffer();
+ cur.forceBufferUpdate();
cur.finishUndo();
break;
}