#include "InsetMathString.h"
#include "InsetMathTabular.h"
#include "MathMacroTemplate.h"
+#include "MathExtern.h"
#include "MathFactory.h"
#include "MathMacroArgument.h"
#include "MathSupport.h"
* \endverbatim
* will result in a grid with 3 rows (+ the dummy row that is always present),
* because the last '\\' opens a new row.
+ * Do never delete a row that contains a multicolumn, even if all cells empty,
+ * since the multicolumn information would get lost otherwise.
* Note that this is only needed for inner-hull grid types, such as array
* or aligned, but not for outer-hull grid types, such as eqnarray or align.
*/
{
InsetMathGrid::row_type const row = grid.nrows() - 1;
for (InsetMathGrid::col_type col = 0; col < grid.ncols(); ++col) {
- if (!grid.cell(grid.index(row, col)).empty())
+ InsetMathGrid::idx_type const idx = grid.index(row, col);
+ if (!grid.cell(idx).empty() ||
+ grid.cellinfo(idx).multi_ != InsetMathGrid::CELL_NORMAL)
return;
}
// Copy the row information of the empty row (which would contain the
}
}
-#if 0
else if (t.cs() == "multicolumn") {
// extract column count and insert dummy cells
MathData count;
int cols = 1;
if (!extractNumber(count, cols)) {
success_ = false;
- lyxerr << " can't extract number of cells from " << count << endl;
+ error("can't extract number of multicolumn cells");
}
// resize the table if necessary
- for (int i = 0; i < cols; ++i) {
+ size_t first = grid.index(cellrow, cellcol);
+ for (int i = 1; i < cols; ++i) {
if (addCol(grid, cellcol)) {
- cell = &grid.cell(grid.index(
- cellrow, cellcol));
- // mark this as dummy
- grid.cellinfo(grid.index(
- cellrow, cellcol)).dummy_ = true;
+ size_t const idx = grid.index(cellrow, cellcol);
+ grid.cellinfo(idx).multi_ =
+ InsetMathGrid::CELL_PART_OF_MULTICOLUMN;
}
}
- // the last cell is the real thing, not a dummy
- grid.cellinfo(grid.index(cellrow, cellcol)).dummy_ = false;
+
+ // the first cell is the real thing, not a dummy
+ cell = &grid.cell(first);
+ grid.cellinfo(first).multi_ = InsetMathGrid::CELL_BEGIN_OF_MULTICOLUMN;
// read special alignment
MathData align;
parse(align, FLAG_ITEM, mode);
- //grid.cellinfo(grid.index(cellrow, cellcol)).align_ = extractString(align);
+ grid.cellinfo(first).align_ = asString(align);
// parse the remaining contents into the "real" cell
parse(*cell, FLAG_ITEM, mode);
}
-#endif
else if (t.cs() == "limits" || t.cs() == "nolimits") {
CatCode const cat = nextToken().cat();
lyxerr << "found math environment `"
<< to_utf8(name)
<< "' in symbols file with unsupported inset `"
- << to_utf8(l->inset)
+ << l->inset
<< "'." << endl;
}
// create generic environment inset