/////////////////////////////////////////////////////////////////////
-Tabular::CellData::CellData(Buffer & buf)
+Tabular::CellData::CellData(Buffer * buf)
: cellno(0),
width(0),
multicolumn(Tabular::CELL_NORMAL),
rotate(false),
inset(new InsetTableCell(buf))
{
- inset->setBuffer(const_cast<Buffer &>(buf));
+ inset->setBuffer(*buf);
}
p_width(cs.p_width),
inset(dynamic_cast<InsetTableCell *>(cs.inset->clone()))
{
- inset->setBuffer(cs.inset->buffer());
}
Tabular::CellData & Tabular::CellData::operator=(CellData cs)
{}
-Tabular::Tabular(Buffer & buffer, row_type rows_arg, col_type columns_arg)
+Tabular::Tabular(Buffer * buffer, row_type rows_arg, col_type columns_arg)
{
init(buffer, rows_arg, columns_arg);
}
// activates all lines and sets all widths to 0
-void Tabular::init(Buffer & buf, row_type rows_arg,
+void Tabular::init(Buffer * buf, row_type rows_arg,
col_type columns_arg)
{
- buffer_ = &buf;
+ buffer_ = buf;
row_info = row_vector(rows_arg);
column_info = column_vector(columns_arg);
cell_info = cell_vvector(rows_arg, cell_vector(columns_arg, CellData(buf)));
void Tabular::appendRow(idx_type const cell)
{
- BufferParams const & bp = buffer().params();
+ BufferParams const & bp = buffer_->params();
row_type const row = cellRow(cell);
row_vector::iterator rit = row_info.begin() + row;
for (row_type i = 0; i < nrows - 1; ++i)
swap(cell_info[i], old[i]);
- cell_info = cell_vvector(nrows, cell_vector(ncols, CellData(buffer())));
+ cell_info = cell_vvector(nrows, cell_vector(ncols, CellData(buffer_)));
for (row_type i = 0; i <= row; ++i)
swap(cell_info[i], old[i]);
for (row_type r = 0; r < nrows; ++r) {
cell_info[r].insert(cell_info[r].begin() + c + 1,
- CellData(buffer()));
+ CellData(buffer_));
#if 0
// FIXME: This code does not work. It deletes the cell's content and
// it triggers an assertion if the cursor is at pos > 0.
void Tabular::updateIndexes()
{
+ setBuffer(buffer());
col_type ncols = column_info.size();
row_type nrows = row_info.size();
numberofcells = 0;
int columns_arg;
if (!getTokenValue(line, "columns", columns_arg))
return;
- init(buffer(), rows_arg, columns_arg);
+ init(buffer_, rows_arg, columns_arg);
l_getline(is, line);
if (!prefixIs(line, "<features")) {
lyxerr << "Wrong tabular format (expected <features ...> got"
unsetMultiColumn(i);
// When unsetting a caption row, also all existing
// captions in this row must be dissolved.
- lyx::dispatch(FuncRequest(LFUN_INSET_BEGIN));
- lyx::dispatch(FuncRequest(LFUN_INSET_DISSOLVE, "caption"));
}
row_info[row].caption = what;
return i;
//
/////////////////////////////////////////////////////////////////////
-InsetTableCell::InsetTableCell(Buffer & buf)
+InsetTableCell::InsetTableCell(Buffer * buf)
: InsetText(buf, InsetText::PlainLayout), isFixedWidth(false),
contentAlign(LYX_ALIGN_CENTER)
{}
//
/////////////////////////////////////////////////////////////////////
-InsetTabular::InsetTabular(Buffer & buf, row_type rows,
+InsetTabular::InsetTabular(Buffer * buf, row_type rows,
col_type columns)
- : tabular(buf, max(rows, row_type(1)), max(columns, col_type(1))), scx_(0),
+ : Inset(buf), tabular(buf, max(rows, row_type(1)), max(columns, col_type(1))), scx_(0),
rowselect_(false), colselect_(false)
{
- setBuffer(buf); // FIXME: remove later
}
break;
case Tabular::TOGGLE_LTCAPTION: {
- bool set = !tabular.ltCaption(row);
+ bool const set = !tabular.ltCaption(row);
cur.idx() = tabular.setLTCaption(row, set);
cur.pit() = 0;
cur.pos() = 0;
cur.setSelection(false);
- // When a row is set as caption, then also insert a caption. Otherwise
- // the LaTeX output is broken, when the user doesn't add a caption.
+
if (set)
+ // When a row is set as caption, then also insert
+ // a caption. Otherwise the LaTeX output is broken.
lyx::dispatch(FuncRequest(LFUN_CAPTION_INSERT));
+ else {
+ FuncRequest fr(LFUN_INSET_DISSOLVE, "caption");
+ if (lyx::getStatus(fr).enabled())
+ lyx::dispatch(fr);
+ }
break;
}
col_type ocol = 0;
row_type row = 0;
if (usePaste) {
- paste_tabular.reset(new Tabular(buffer(), rows, maxCols));
+ paste_tabular.reset(new Tabular(buffer_, rows, maxCols));
loctab = paste_tabular.get();
cols = 0;
dirtyTabularStack(true);