}
-void MathGridInset::metrics(MathStyles st) const
+void MathGridInset::metrics(MathMetricsInfo const & st) const
{
// let the cells adjust themselves
MathNestInset::metrics(st);
}
-void MathGridInset::write(std::ostream & os, bool fragile) const
+void MathGridInset::write(MathWriteInfo & os) const
{
for (row_type row = 0; row < nrows(); ++row) {
+ for (col_type col = 0; col < ncols(); ++col)
+ os << cell(index(row, col)) << eocString(col);
+ os << eolString(row);
+ }
+}
+
+
+void MathGridInset::writeNormal(std::ostream & os) const
+{
+ os << "[grid ";
+ for (row_type row = 0; row < nrows(); ++row) {
+ os << "[row ";
for (col_type col = 0; col < ncols(); ++col) {
- cell(index(row, col)).write(os, fragile);
- os << eocString(col);
+ os << "[cell ";
+ cell(index(row, col)).writeNormal(os);
+ os << "]";
}
- os << eolString(row);
+ os << "]";
}
+ os << "]";
}
popit = false;
deleteit = false;
- // delete entire row if in first cell of empty row
- if (col(idx) == 0 && nrows() > 1) {
+ // delete entire sequence of ncols() empty cells if possible
+ if (idx <= index(nrows() - 1, 0)) {
bool deleterow = true;
for (idx_type i = idx; i < idx + ncols(); ++i)
if (cell(i).size()) {
deleterow = false;
break;
}
- if (deleterow)
+
+ if (deleterow) {
+ // move cells if necessary
+ for (idx_type i = index(row(idx), 0); i < idx; ++i)
+ cell(i).swap(cell(i + ncols()));
+
delRow(row(idx));
- if (idx >= nargs())
- idx = nargs() - 1;
- return;
+ if (idx >= nargs())
+ idx = nargs() - 1;
+ return;
+ }
}
// undo effect of Ctrl-Tab (i.e. pull next cell)